파이썬 중급

조지원·2023년 5월 9일

python

목록 보기
6/15
post-thumbnail

💻keep going

이제 슬슬 뭐가 뭔지 모르는 시기가 온 것 같다. 그냥 해야겠다.


💡 __name__ 전역변수

모듈을 여러가지 만들어놓고 필요한 모듈만 그때그때 가져다 쓸 때 사용

if __name__ == "__main__" : 
	print(addModule.add(10,20))

👆 만약 지금 실행하고 있는 파일이 실행파일(__main__) 이라면 print내용을 실행해라.
그렇지 않으면 실행하지 마라.



💡 패키지

모듈이 많아 졌을때 관리



💡 site - packeages

모듈을 전체적으로 사용하고싶으면 site - packeges 안으로 넣어놓고 사용하면 전체적으로 사용가능하다.

해당 모듈 파일 오른쪽 클릭 -> Refactor -> Move directory -> venv -> Lib -> site - packeges 로 이동



💡 자주 사용하는 모듈

합 
  
listVar = [2, 5, 3.14, 58, 10, 2]
print(f"sum(listVar) : {sum(listVar)}")



최대값 (가장 큰값 찾아줌)
  
listVar = [2, 5, 3.14, 58, 10, 2]
print(f"sum(listVar) : {max(listVar)}")




최솟값 (가장 작은값 찾아줌)
  
listVar = [2, 5, 3.14, 58, 10, 2]
print(f"sum(listVar) : {min(listVar)}")




거듭제곱 (계산할 계수, 제곱수)
  
print(f"pow(13, 2) : {pow(13, 2)}")
print(f"pow(13, 3) : {pow(13, 3)}")
print(f"pow(13, 4) : {pow(13, 4)}")




반올림
  
print(f"round(3.141592, 2) : {round(3.141592, 2)}")

  
  

import math 사용 후
  
import math

절댓값
  
print(int(math.fabs(-10)))
print((math.fabs(-0.2142535)))




올림
  
print(f"math.ceil(5,21) : {math.ceil(5.21)}")
print(f"math.ceil(-5,21) : {math.ceil(-5.21)}")




내림
  
print(f"math.floor(5,21) : {math.floor(5.21)}")
print(f"math.floor(-5,21) :{math.floor(-5.21)}")




버림
  
print(f"math.trunc(6, 25) : {math.trunc(6.25)}")
print(f"math.trunc(-6, 25) : {math.trunc(-6.25)}")




최대공약수 : 0이 아닌 두 개 이상의 정수의 공통되는 약수 중에서 가장 큰 수
  
  
  
  
print(f"math.gcd(12, 30) : {math.gcd(12,30)}")

팩토리얼
  
print(f"math.factorial(10) : {math.factorial(5)}")





제곱근 : 어떤 수를 2번 곱해서 해당 수가 나온다.
  
print(f"math.sqrt(6) : {math.sqrt(6)}")
  
  
  
  

import random 사용 후
  
import random

random.random() :  0.0에서부터 1.0 사이의 실수 반환
  
rNum = random.random()
print(rNum)




random.randint(a, b) :  a ~ b 숫자중 랜덤으로 반환
  
rNum = random.randint(100, 200)
print(rNum)




random.sample(sequence, k) : 지정한 숫자만큼의 요소들을 랜덤으로 뽑아 리스트로 반환
  
sequence : 리스트, 집합, range()등 random의 범위 / k : 반환될 리스트의 크기 입력
  
rNum = random.sample(range(1, 11), 4) # 범위 : 1 ~ 10까지 / 갯수 4개
print(rNum)

  
  
  
  
  
import time 사용 후

import time

lt = time.localtime() : 현재 시스템의 시간 반환

print(lt)




print(f"lt.tm_year : {lt.tm_year}")  # 연도만 구하고 싶을 때
  
print(f"lt.tm_mon : {lt.tm_mon}")  # 월만 구하고 싶을 때
  
print(f"lt.tm_mday : {lt.tm_mday}")  # 일만 구하고 싶을 때


💡 객채지향 프로그래밍



💡 클래스

이름은 첫글자 대문자를 사용

클래스를 사용하지 않은 예 :

# 개 정보를 출력하는 함수
def print_dog_info(name, breed, age):
    print(f"개 이름: {name}")
    print(f"개 종류: {breed}")
    print(f"개 나이: {age}")
    
# 고양이 정보를 출력하는 함수
def print_cat_info(name, breed, age):
    print(f"고양이 이름: {name}")
    print(f"고양이 종류: {breed}")
    print(f"고양이 나이: {age}")
    
# 개 정보 출력
print_dog_info("뽀삐", "푸들", 3)

# 고양이 정보 출력
print_cat_info("나비", "샴", 2)

클래스를 사용한 예 :

# 동물 클래스 정의
class Animal:
    def __init__(self, name, breed, age):
        self.name = name
        self.breed = breed
        self.age = age
        
    def print_info(self):
        print(f"동물 이름: {self.name}")
        print(f"동물 종류: {self.breed}")
        print(f"동물 나이: {self.age}")
        
# 개 객체 생성
dog = Animal("뽀삐", "푸들", 3)
dog.print_info()

# 고양이 객체 생성
cat = Animal("나비", "샴", 2)
cat.print_info()


💡 객체와 메모리



💡 얕은 복사

class TemCls:

    def __init__(self, n, s):
        self.number = n
        self.str = s



    def printClsInfo(self):
        print(f"self.number : {self.number}")
        print(f"self.str : {self.str}")




tc1 = TemCls(10, "Hello")
tc2 = tc1

tc1.printClsInfo()
tc2.printClsInfo()

# 확인해보기

print()

tc2.number = 3.14
tc2.str = "Bye"

tc1.printClsInfo()
tc2.printClsInfo()

# tc1 와 tc2 정보가 동일하게 변경된다.

결과 :

self.number : 10
self.str : Hello
self.number : 10
self.str : Hello

self.number : 3.14
self.str : Bye
self.number : 3.14
self.str : Bye

💡 깊은 복사

import copy

tc1 = TemCls(10, "Hello")
tc2 = copy.copy(tc1)

tc1.printClsInfo()
tc2.printClsInfo()

tc2.number = 3.14
tc2.str = "Bye"

# 확인해보기    tc1 내용은 그대로이고 tc2 내용만 바뀐다.

print()
tc1.printClsInfo()
tc2.printClsInfo()

결과 :

self.number : 10
self.str : Hello
self.number : 10
self.str : Hello

self.number : 10
self.str : Hello
self.number : 3.14
self.str : Bye


⚡ Check

import sys 👉 시스템의 대한 간략한 정보를 갖고있는 모듈

sys.path 👉 모듈들이 들어있는 경로를 쭉 나열

ex)   

import sys

print(sys.path)
결과 : 
  
 ['', '/usr/lib/python39.zip', '/usr/lib/python3.9', '/usr/lib/python3.9/lib-dynload', '/home/user/.local/lib/python3.9/site-packages', '/usr/local/lib/python3.9/dist-packages', '/usr/lib/python3/dist-packages']

✔ ctrl + shift + z = 다시실행(ctrl + z 반대)

profile
keep going

0개의 댓글