Hello, World!
print("Hello, World!");
- 파이썬은 블록 스코프를 만들기 위해 중괄호가 아닌 띄어쓰기를 사용
x = 1
if x == 1:
print("x is 1.")
Variables and Types
- 파이썬은 완전히 객체 지향적이고 정적 타입의 언어가 아님
- 변수를 명백하게 할 필요가 없음
- 모든 변수는 객체
Numbers
- 숫자 타입의 경우 integers와 floating point numbers를 지원(그 외에도 복잡한 것들도 지원)
1. interger
myint = 7
print(myint)
2. float
myfloat = 7.0
print(myfloat)
myfloat = float(7)
print(myfloat)
Strings
mystring = 'hello'
print(mystring)
mystring = "hello"
print(mystring)
mystring = "Don't worry about apostrophes"
print(mystring)
one = 1
two = 2
three = one + two
print(three)
hello = "hello"
world = "world"
helloworld = hello + " " + world
print(helloworld)
mystring = "hello"
myfloat = 10.0
myint = 20
if mystring == "hello":
print("String: %s" % mystring)
if isinstance(myfloat, float) and myfloat == 10.0:
print("Float: %f" % myfloat)
if isinstance(myint, int) and myint == 20:
print("Integer: %d" % myint)
Lists
mylist = []
mylist.append(1)
mylist.append(2)
mylist.append(3)
print(mylist[0])
print(mylist[1])
print(mylist[2])
for x in mylist:
print(x)
mylist = [1,2,3]
print(mylist[10])
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
print(mylist[10])
IndexError: list index out of range
Basic Operators
Arithmetic Operators
number = 1 + 2 * 3 / 4.0
print(number)
remainder = 11 % 3
print(remainder)
squared = 7 ** 2
cubed = 2 ** 3
print(squared) // 49
print(cubed) // 8
Using Operators with Lists
even_numbers = [2,4,6,8]
odd_numbers = [1,3,5,7]
all_numbers = odd_numbers + even_numbers
print(all_numbers) // [1, 3, 5, 7, 2, 4, 6, 8]
print([1,2,3] * 3) // [1, 2, 3, 1, 2, 3, 1, 2, 3]
- %s - String (or any object with a string representation, like numbers)
- %d - Integers
- %f - Floating point numbers
- %.f - Floating point numbers with a fixed amount of digits to the right of the dot.
- %x/%X - Integers in hex representation (lowercase/uppercase)
name = "John"
print("Hello, %s!" % name)
name = "John"
age = 23
print("%s is %d years old." % (name, age))
mylist = [1,2,3]
print("A list: %s" % mylist)
Basic String Operations
astring = "Hello world!"
astring2 = 'Hello world!'
astring = "Hello world!"
print("single quotes are ' '") // single quotes are ' '
print(len(astring)) // 12
astring = "Hello world!"
print(astring.index("o")) // 4
astring = "Hello world!"
print(astring[3:7]) // lo w
astring = "Hello world!"
print(astring[3:7:2]) // l
astring = "Hello world!"
print(astring[::-1]) // !dlrow olleH
astring = "Hello world!"
print(astring.upper()) // HELLO WORLD!
print(astring.lower()) // hello world!
astring = "Hello world!"
print(astring.startswith("Hello")) // True
print(astring.endswith("asdfasdfasdf")) // False
astring = "Hello world!"
afewwords = astring.split(" ")
print(afewwords) // ['Hello', 'world!']
Conditions
x = 2
print(x == 2)
print(x == 3)
print(x < 3)
name = "John"
age = 23
if name == "John" and age == 23:
print("Your name is John, and you are also 23 years old.") // Your name is John, and you are also 23 years old.
if name == "John" or name == "Rick":
print("Your name is either John or Rick.") // Your name is either John or Rick.
The "in" operator
- iterable 객체 컨테이너에 특정 객체가 존재하는지 체크할 때 사용될 수 있음
name = "John"
if name in ["John", "Rick"]:
print("Your name is either John or Rick.") // Your name is either John or Rick.
statement = False
another_statement = True
if statement is True:
pass
elif another_statement is True:
pass
else:
pass
The 'is' operator
- ==와 평가방식이 다르며, is 연산자는 변수의 밸류들을 매치x
x = [1,2,3]
y = [1,2,3]
print(x == y)
print(x is y)
The "not" operator
print(not False)
print((not False) == (False))
Loops
The "for" loop
primes = [2, 3, 5, 7]
for prime in primes:
print(prime)
// 2
// 3
// 5
// 7
for x in range(5):
print(x)
for x in range(3, 6):
print(x)
for x in range(3, 8, 2):
print(x)
"while" loops
count = 0
while count < 5:
print(count)
count += 1
"break" and "continue" statements
count = 0
while True:
print(count)
count += 1
if count >= 5:
break
for x in range(10):
if x % 2 == 0:
continue
print(x)
Functions
def my_function():
print("Hello From My Function!")
def my_function_with_args(username, greeting):
print("Hello, %s , From My Function!, I wish you %s"%(username, greeting))
def sum_two_numbers(a, b):
return a + b
my_function()
my_function_with_args("John Doe", "a great year!")
x = sum_two_numbers(1,2)
Classes and Objects
class MyClass:
variable = "blah"
def function(self):
print("This is a message inside the class.")
myobjectx = MyClass()
print(myobjectx.variable) // blah
class MyClass:
variable = "blah"
def function(self):
print("This is a message inside the class.")
myobjectx = MyClass()
myobjectx.function() // This is a message inside the class.
Dictionaries
- 딕셔너리는 배열과 유사한 데이터 타입
- 인덱스가 아닌 키/밸류 페어로 작동
- 각 밸류는 키로 접근가능한 딕셔너리 안에 저장
phonebook = {}
phonebook["John"] = 938477566
phonebook["Jack"] = 938377264
phonebook["Jill"] = 947662781
print(phonebook) // {'Jack': 938377264, 'Jill': 947662781, 'John': 938477566}
phonebook = {
"John" : 938477566,
"Jack" : 938377264,
"Jill" : 947662781
}
print(phonebook) // {'Jack': 938377264, 'Jill': 947662781, 'John': 938477566}
Iterating over dictionaries
phonebook = {"John" : 938477566,"Jack" : 938377264,"Jill" : 947662781}
for name, number in phonebook.items():
print("Phone number of %s is %d" % (name, number))
// Phone number of Jack is 938377264
// Phone number of Jill is 947662781
// Phone number of John is 938477566
Removing a value
phonebook = {
"John" : 938477566,
"Jack" : 938377264,
"Jill" : 947662781
}
del phonebook["John"]
print(phonebook) // {'Jack': 938377264, 'Jill': 947662781}
phonebook = {
"John" : 938477566,
"Jack" : 938377264,
"Jill" : 947662781
}
phonebook.pop("John")
print(phonebook) // {'Jack': 938377264, 'Jill': 947662781}
Modules and Packages
- 파이썬에서 모듈은 py 확장자 사용
- 모듈의 이름 = 파일의 이름
import draw
def play_game():
...
def main():
result = play_game()
draw.draw_game(result)
if __name__ == '__main__':
main()
def draw_game():
...
def clear_screen(screen):
...
Importing module objects to the current namespace
from draw import draw_game
def main():
result = play_game()
draw_game(result)
Importing all objects from a module
from draw import *
def main():
result = play_game()
draw_game(result)
Custom import name
if visual_mode:
import draw_visual as draw
else:
import draw_textual as draw
def main():
result = play_game()
draw.draw_game(result)
Module initialization
- 같은 모듈을 두 번 임포트하면 singleton 규칙에 의해 오직 한 번만 로드
def draw_game():
clear_screen(main_screen)
...
def clear_screen(screen):
...
class Screen():
...
main_screen = Screen()
Extending module load path
- 특정 디렉토리인 환경변수 PYTHONPATH를 이용가능
PYTHONPATH=/foo python game.py
- 아래는 로컬 디렉토리 만큼 foo 디렉토리로 부터 모듈을 로드 가능
sys.path.append("/foo")
Exploring built-in modules
import urllib
urllib.urlopen(...)
- 사용하길 워하는 모듈의 함수를 찾을 때 help함수를 이용하여 사용법을 알 수 있음
help(urllib.urlopen)
Writing packages
- 패키지는 복수의 패키지들이나 모듈 자체에 포함된 네임 스페이스
- 각 패키지의 디렉토리는 반드시 'init.py' 라는 특별한 파일이 포함되어야 함
- 이 파일은 빈 파일 일수도 있으며, 디렉토리를 가리킴
- 모듈을 임포트 하는 방법과 똑같이 임포트할 수 있음
- 패키지 이름을 표시하는 foo라는 디렉토리를 만들면 bar라는 패키지 안에 모듈을 만들 수 있음
- 그리고 foo 디렉토리 안에 init.py를 추가하는 것을 잊지 말아야 함
import foo.bar
// or
from foo import bar
__init__.py:
__all__ = ["bar"]
참고자료