파이썬 기초문법(2)

사용자 Mgmix

·

2020. 8. 19. 03:03

 

함수와 모듈

#함수 
def print_ntimes(n):
        print("Somthing")

def cal_upper(price):
        increment = price * 0.3
        upper_price = price + increment
        return upper_price

def cal_upper_lower(price):
        offset = price * 0.3
        upper = price + offset
        lower = price - offset
        return (upper, lower) #결과를 tuple 로 반환

모듈을 사용하려면 import 로 추가 하여 사용하면 된다

시간다루기

# 현재 시각을 반환하는 함수, 1970년 1월 1일 0시 0분 0초 기준, 초 단위로 지난 시간 알림
>>> import time
>>> time.time()
1597745194.8230321
>>> time.ctime()
'Tue Aug 18 19:06:54 2020'
>>> type(_) # '_' 인자는 가장 최근의 반환 값을 바인딩 하고 있는 변수
<class 'str'>

# Sleep
time.sleep(10)

# 모듈 위치 확인 
>>> import time
>>> time
<module 'time' (built-in)> # 내장 함수
>>> import random
>>> random
<module 'random' from '/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7/random.py'>

# 모듈 내의 함수와 변수 확인
>>> import time
>>> dir(time)
['CLOCK_MONOTONIC', 'CLOCK_MONOTONIC_RAW', 'CLOCK_PROCESS_CPUTIME_ID', 'CLOCK_REALTIME', 'CLOCK_THREAD_CPUTIME_ID', '_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'clock', 'clock_getres', 'clock_gettime', 'clock_gettime_ns', 'clock_settime', 'clock_settime_ns', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'monotonic_ns', 'perf_counter', 'perf_counter_ns', 'process_time', 'process_time_ns', 'sleep', 'strftime', 'strptime', 'struct_time', 'thread_time', 'thread_time_ns', 'time', 'time_ns', 'timezone', 'tzname', 'tzset']

OS 모듈

운영체제 에서 제공되는 여러 기능을 모듈로 제공

# 현재 경로 
import os
os.getcwd()
'/Users/user ~~'

# 특정 경로에 존재하는 파일과 디렉터리 목록을 구하는 함수
os.listdir() or os.listdir('c:/path')

# 확장자 끝이 .exe 로 끝나는 경우만 필터
for x in os.list():
        if x.endswith('exe'):
                    print(x)

# 사용하고자 하는 모듈의 이름 변경
import os as something
something.listdir()
['test.py', 'example.py', 'example.pyc']

필요한 함수만 import 해야 할 경우 from os import listdir 와 같이 사용

클래스

파이썬에서는 함수도 클래스!

# 클래스 생성
class Card:
        def setInfo(self, name, email):
                    self.name = name
                    self.email = email

# 'self.변수명' 과 같은 형태를 띄는 변수를 인스턴스 변수라고 지칭
# 인스턴스 변수는 클래스 인스턴스 내부의 변수를 의미
# 클래스를 정의하는 순간에는 인스턴스의 이름을 모르기 때문에 self 를 사용

생성자

파이썬에서는 __init__(self) 와 같은 이름의 메서드를 생성자라고 지칭

파이썬 클래스에서, __ 로 시작하는 함수는 특별한 메서드를 의미

class MyClass:
    def __init__(self):
          print("Initialized.. ")

test = MyClass()
Initialized..

# 인스턴스가 소멸될 때 자동으로 호출되는 소멸자는 아래와 같다
__del__(self)

Self

파이썬의 첫번째 인자로 항상 인스턴스가 전달 된다.

Class Foo:
        def func(self):
                print(id(self))

f1 = Foo()

Foo.func(f1) or f1.func()

# 인스턴스.메서드() 와 클래스.메서드(인스턴스) 의 방식이 있음
self 는 클래스 인스턴스를 의미

네임 스페이스

변수가 객체를 바인딩 할때, 둘 사이의 관계를 저장하고 있는 공간을 의미

'a = 2 라고 했을 때, a 변수가 2라는 객체가 저장된 주소를 가지고 있다.' 이러한 연결 관계에 대한 정보를 저장하고 있는 공간이 네임 스페이스

클래스의 네임스페이스를 코드로 확인하려면 __dict__ 속성을 확인
Foo.__dict__
mappingproxy({'__module__': '__main__', 'func1': <function Foo.func1 at 0x10610add0>, 'func2': <function Foo.func2 at 0x10610ae60>, '__dict__': <attribute '__dict__' of 'Foo' objects>, '__weakref__': <attribute '__weakref__' of 'Foo' objects>, '__doc__': None})

인스턴스의 네임스페이스에 변수가 존재하지 않으면, 클래스의 네임스페이스로 가서 변수를 찾는다

인스턴스간에 서로 공유해야 하는 값은 클래스 변수를 통해 바인딩 한다

클래스 상속

class Animal:
            def eat(self):
                    print("Eat")

class Dog(Animal):  # 상속시 부모 클래스는 클래스명(부모클래스) 와 같이 작성
            pass 

dog = Dog()
dog.eat()
>>> Eat

파일 다루기

# 파일 읽기
f = open('path/file.txt', 'rt') # 첫번째 인자는 파일 경로, 두번째 인자는 파일을 여는 모드를 지정
# 읽기모드로 열려면 'r' 텍스트 파일인 경우에는 't' 를 지정

lines = f.readlines()
# 데이터를 읽기위해 readlines 메서드를 사용, 리스트를 반환

# 파일 쓰기
f = open('path/file.txt', 'wt') # 저장을 위해 'w' 를 사용

f.write('This is Example\n')
f.close() # 데이터를 쓴 후에는 close 함수로 파일을 닫으면 된다

 

 

 

 

 

 

공부 사이트 및 출처 : https://wikidocs.net/book/110

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

 

'Programming > Python' 카테고리의 다른 글

파이썬 기초문법(2)  (0) 2020.08.19
파이썬 기초 문법(1)  (0) 2020.08.16

0개의 댓글