[Python] Basic Syntax

Suyeon·2021년 9월 22일
0

Python

목록 보기
1/3
post-thumbnail

본 글은 아래 링크의 튜토리얼을 참고한 글입니다.
Learn Python - Full Course for Beginners
Intermediate Python Programming Course

Features

  • Interpreted Language
  • Dynamically type
  • High level Language

Interpreted Language
우리가 작성한 .py파일은 .pyc 혹은 .pyo의 포맷을 가진 bytecode로 컴파일된다. 컴파일이 되면, interpreter에 의해 bytecode가 실행된다. 이 때 bytecode instruction은 Virtual Machine에서 실행된다.

Convention

  • comment는 #을 사용
  • 네이밍은 underscore 를 사용
  • indentation

기타

  • pip: Package Manager
  • python3: Python Interpreter

Import module

# relative path
from ..Test.Package import Test

# absolute path 
from Project.Test.Package import Test

Variable

my_name = "John" 
my_age = 26 
is_female = True # False

Tuple

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)

Dictionary

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

List

  • [1, 2, 3, 4, 5]
# 2D list 
number_grid = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9],
  [0],
]

print(number_grid[0][0])

Set

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)

Function

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

Lamda Function

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 list
  • sorted: 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)

Class

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 statement

  • if elif or and not
  • comparison operator: == !=
  • exponent operator: 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 

Loop

# 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)

Try/Except

파이썬은 에러의 종류에 따라서 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')

File

Read

  • r: read, w: write, a: append, r+: read and write
text_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() 

Append

파일의 마지막 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() 

Write

기존의 파일을 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() 

JSON

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)
profile
Hello World.

0개의 댓글