본 글은 아래 링크의 튜토리얼을 참고한 글입니다.
Learn Python - Full Course for Beginners
Intermediate Python Programming Course
Interpreted Language
우리가 작성한 .py파일은 .pyc 혹은 .pyo의 포맷을 가진 bytecode로 컴파일된다. 컴파일이 되면, interpreter에 의해 bytecode가 실행된다. 이 때 bytecode instruction은 Virtual Machine에서 실행된다.
#
을 사용underscore
를 사용indentation
pip
: Package Managerpython3
: Python Interpreter# relative path
from ..Test.Package import Test
# absolute path
from Project.Test.Package import Test
my_name = "John"
my_age = 26
is_female = True # False
A tuple is similar to a list in terms of indexing, nested objects and repetition but a tuple is immutable unlike lists that are mutable.
- 파이썬에서 데이터 컬렉션을 저장하는 대표적인 방법은 tuple, list, dictionary, set이 있다.
(1, 2, 3, 4)
# create a tuple
coordinates = (4, 5)
coordinates_list = [(1, 2), (3, 4)
A dictionalry is an unordered collection of data values, used to store data values like a map, which unlike other Data Types that hold only single value as an element, Dictionary holds key:value pair.
{'first': 1, 'second': 2, 'third': 3, 'fourth': 4}
month = {
'Jan': 'January',
'Feb': 'February',
'Mar': 'March',
1: 'First'
}
print(month['Jan'])
print(month.get('Mar'))
print(month.get('Test', 'Not a valid key')) # default value
[1, 2, 3, 4, 5]
# 2D list
number_grid = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[0],
]
print(number_grid[0][0])
A Set is an unordered collection data type that is iterable, mutable and has no duplicate elements.
{1, 2, 3, 4}
set([1, 2, 3, 4])
thisset = {"apple", "banana", "cherry"}
print(thisset)
def exponent_num(base_num, pow_num):
res = 1
for index in range(pow_num):
res = res * base_num
return res
print(exponent_num(3, 2))
keyword argument
파라미터에 key를 제공한다.
# positional args
quadratic(31, 93, 62)
# keyword args: order is not matters
quadratic(a=31, b=93, c=62)
quadratic(c=62, b=93, a=31)
*args
multiple arguments
를 인자로 받는 경우 사용한다. 이 때 args는 함수 내부에 positional arguments의 tuple
로 전달된다. args은 컨벤션이므로 커스텀하게 변경 가능하다.
def get_sum(*args):
result = 0
for x in args:
result += x
return result
print(get_sum(1, 2, 3))
*kwargs
kwargs
는 keyword arguments의 줄임말로, *args
와 비슷하지만, kwargs의 경우 multiple keyword arguments
를 인자로 받는다. 이 때 argument는 함수내부에 keyword argument의 dictionary
로 ({ 'a': 'A' }
와 같이) 전달된다.
def concatenate(**kwargs):
result = ""
for arg in kwargs.values():
result += arg
return result
print(concatenate(a="A", b="B", c="C", d="D")) # ABCD
Lambda Function, also referred to as ‘Anonymous function’ is same as a regular python function but can be defined without a name.
- lambda arguments : expression (single line)
예시1
# lamda
squares = lambda x: x*x
hello = lambda : "hello world"
# def keyword
def squares(x):
return x*x
예시2
sort
: It modifies the listsorted
: It return a new list# tuple
points2D = [(1, 2), (15, 1), (5, -1)]
points2D_sorted = sorted(points2D, key=lambda x: x[0] + x[1])
# map(fun, iter)
numbers = (1, 2, 3, 4)
result1 = map(lambda num: num + num, numbers)
result2 = [x*2 for x in numbers] # list comprehension
print(list(result1))
print(result2)
# filter(fun, iter)
result3 = filter(lambda num: num % 2 == 0, numbers)
result4 = [x for x in numbers if x % 2 == 0] # list comprehension
print(list(result3))
print(list(result4))
# reduce(fun, iter)
result5 = reduce(lambda x, y: x*y, numbers)
print(result5)
Creating a new class creates a new type of object, allowing new instances of that type to be made.
self
는 instance(object)를 가리킨다.
class Dog:
kind = 'Puddle' # class variable shared by all instances
def __init__(self, name):
self.name = name # instance variable unique to each instance
self.color = color
def check_is_white(self):
if self.color == 'white':
return True
else:
return False
dog1 = Dog('Fido', white)
dog2 = Dog('Buddy', brown)
dog1.kind # shared by all dogs
dog2.kind # 'canine'
dog1.name # 'Fido'
dog2.name # 'Buddy'
print(dog1.check_is_white()) # True
클래스는 아래와 같이 Generic Class로부터 상속받을 수 있다.
class Puddle(Dog):
if
elif
or
and
not
==
!=
2**3
(2x2x2)is_femail = True
is_tall = True
if is_femail or is_tall:
print('You are a female.')
elif is_femail and not(is_tall):
print('You are a female but not tall')
else:
print('You are a male.')
# or => ||
# and => &&
# not => !
# elif => else if
# while loop
i = 1
while i <= 10:
print(i)
i += 1
# for loop
for letter in 'Suyeon':
print(letter)
names = ['Suyeon', 'Hanna', 'Sarang']
for name in names:
print(name)
for index in range(10):
print(index)
for index in range(3, 11):
print(index)
for index in range(len(names)):
print(index)
# nested for loop
number_grid = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[0],
]
for row in number_grid:
for col in row:
print(col)
파이썬은 에러의 종류에 따라서 ZeroDivisionError
, ValueError
와 같은 타입을 제공한다.
try:
division = 10/0
number = int(input('Enter a number: '))
print(number)
except ZeroDivisionError as err: # you can name an error using as
print(err)
except ValueError:
print('Invalid input')
r
: read, w
: write, a
: append, r+
: read and writetext_file = open('./resources/employee.txt', 'r')
print(text_file.readable())
print(text_file.read())
print(text_file.readline())
for line in text_file.readlines(): # readlines(): put lines to an array
print(line)
text_file.close()
파일의 마지막 line에 텍스트를 삽입한다.
text_file = open('./resources/employee.txt', 'a')
text_file.write('Hello World')
text_file.write('\nHello World!') # adding it as a new line
text_file.close()
기존의 파일을 overwriting하거나 새로운 파일을 생성할 수 있다.
text_file = open('./resources/employees.txt', 'w')
text_file.write('Hello World')
text_file.close()
# 다양한 종류의 파일을 생성할 수 있다.
html_file = open('index.html', 'w')
html_file.write('<p>Html File</p>')
html_file.close()
import json
x = '{ "name":"John", "age":30, "city":"New York"}'
# parse json to an object
y = json.loads(x)
x = {
"name": "John",
"age": 30,
"city": "New York"
}
# convert into JSON:
y = json.dumps(x)