StoryCode

static

Python, 파이썬
반응형

1) Python 에는 그런 거 없다. 다른 방식으로 비슷하게 구현해야 한다.

 

2-1)

def func(static_var = [0]):

       static_var[0] +=1

        return static_var[0]

 

# func 를 의도한대로 사용한 결과

print(func()) # 1 출력

print(func()) # 2 출력

 

# func 를 의도에서 벗어나 사용한 결과 문제점

print(func()) # 1 출력

print(func([10, 20, 30])) # 11 출력

print(func()) # 2 출력

 

2-2) 2-1 의 문제점 해결한 방식. class member variable 방식

def func()

    func.counter += 1

    return func.counter

 

func.counter = 0

처럼 하면 func 객체 ( def 라 함수지만 python 에서 모두 객체이다. counter 는 member 변수가 되고, 객체가 사라지지 않는 이상 유지된다. Ex> del func.counter)

 

2-3) 2-1 의 문제점 해결한 방식. nonlocal 방식. in 에서 out의 변수 참조가 존재할 수 있어서 변수 유지해줌.

def out_func():
    static_var = 0
     def in_func():
          nonlocal static_var # static_var 는 in_func 에서만 변경할 수 있다.
          static_var 十= 1
          return static_var
     return in_func

 

out_func()

반응형

locals, return 될 변수를 동적으로 변경하는 방법

Python, 파이썬
반응형

# locals 에는 메소드의 변수가 저장되어 있음. 이를 이용해서 returns 가 요구하는 변수들만 뽑아서 리턴할 수 있다.

def forward(x, f, h, returns):

    xf = x + f
    fh = f + h
    xfh = xf * fh

    result = xfh

 

    variables = locals()

    return tuple(variables[r] for r in returns)

 

a, b = forward(1,2,3, returns=("xf", "fh")) # xf 와 fh 를 리턴해달라 요구

d, e, f = forward(1,2,3, returns=("xf", "fh", "result")) # xf 와 fh오f result 를 리턴해달라 요구

반응형

'Python, 파이썬' 카테고리의 다른 글

static  (0) 2024.12.05
Debuggin,디버깅,pdb  (0) 2024.05.24
import directory 지정해주기  (0) 2024.04.19
csv 를 읽어 mysql create table 문장 생성  (0) 2024.03.16
..., :, Ellipsis  (0) 2023.09.21

Debuggin,디버깅,pdb

Python, 파이썬
반응형

1) python3 -m pdb sourcecode.py

 

2.1) 소스 코드 보기

l <Enter> # L 임. 열 줄 정도 나옴. 코드 줄 번호 나옴. -> 가 현재 Instruction 위치임.

 

2.2) 소스 코드 계속 보기

l 을 계속 치면 소스코드가 이어져서 나옴.

 

2.3) 소스 특정 라인 보기

l 180 # 180번 라인 주변을 보여줌.

 

3.1) 변수 보기 

p 변수명 # print

 

3.2) 변수값이 변하면 바로 보이기

d 변수명 # display

 

4.1) Breakpoint 설정

b 180

 

4.2) Run at breakpoint

c # continue

 

4.3) Breakpoint 목록

b

 

4.4) Breakpoint 삭제

cl breakpoint번호 # clear, breakpoint번호 는 b 에서 확인 가능

 

9) 나가기

q

 

반응형

'Python, 파이썬' 카테고리의 다른 글

static  (0) 2024.12.05
locals, return 될 변수를 동적으로 변경하는 방법  (0) 2024.12.05
import directory 지정해주기  (0) 2024.04.19
csv 를 읽어 mysql create table 문장 생성  (0) 2024.03.16
..., :, Ellipsis  (0) 2023.09.21

import directory 지정해주기

Python, 파이썬
반응형

1) PYTHONPATH

 

2) SETUP

> setup.py

 

from setuptools import setup, find_packages

setup(
    name="myutils",
    packages=find_packages(),
    author='MyUtils,
    version='1.0',
    description='MyUtils'
)

 

python3 setup.py

반응형

csv 를 읽어 mysql create table 문장 생성

Python, 파이썬
반응형

# Ubuntu 에서 특정 디렉토리에 있는 CSV 들을 읽어서 각 csv 에 매칭되는 create table sql 생성한다. 

 

import csv
import os
import getpass

# 특정 디렉토리 경로
username = getpass.getuser()
directory = os.path.join("/home", username, "mycsvdirectory/")

# 디렉토리 내의 모든 csv 파일 목록 가져오기
filenames = os.listdir(directory)
csv_files = [f for f in filenames if f.endswith(".csv")]

with open("CREATETABLE.sql", "w") as f:
    f.truncate()

# 각 csv 파일을 읽어 CREATE TABLE 문 생성 및 저장
for csv_file in csv_files:
    print("Filename :" + csv_file)
    with open(os.path.join(directory, csv_file), "r") as f:
        reader = csv.reader(f)

        # 첫 번째 행 (헤더)을 읽어 컬럼 목록으로 변환
        headers = next(reader)

        # 컬럼명에서 '-'를 '_'로 변경
        headers = [col.replace("-", "_") for col in headers]
        print(headers)

        # 첫 번째 컬럼을 제외한 나머지 컬럼 목록 생성
        remaining_headers = headers[0:]
        print(remaining_headers)

        # 각 컬럼의 최대 길이 저장
        column_max_lengths = {}
        for col in remaining_headers:
            column_max_lengths[col] = 0

        # 데이터 읽어서 각 컬럼 최대 길이 계산
        for row in reader:
            for i, col in enumerate(row):
                # print(row)
                if len(col) > column_max_lengths[remaining_headers[i]]:
                    column_max_lengths[remaining_headers[i]] = len(col)
        print(column_max_lengths);

        # DROP TABLE IF EXISTS 문 생성
        drop_table_sql = f"DROP TABLE IF EXISTS MYTABLE_{csv_file[:-4].upper()}_TBL;\n"

        # CREATE TABLE 문 생성
        create_table_sql = f"""
            CREATE TABLE IF NOT EXISTS MYTABLE_{csv_file[:-4].upper()}_TBL (
                {", ".join([f"{col} VARCHAR({column_max_lengths[col]})" for col in remaining_headers])}
            );

            CREATE INDEX idx_{csv_file[:-4].upper()}_TBL ON MYTABLE_{csv_file[:-4].upper()}_TBL ({headers[0]});
        """

        # SQL 문을 1.0.result.CREATETABLE.sql 파일에 저장
        with open("CREATETABLE.sql", "a") as f:
            f.write(drop_table_sql)
            f.write(create_table_sql + "\n")

반응형

'Python, 파이썬' 카테고리의 다른 글

Debuggin,디버깅,pdb  (0) 2024.05.24
import directory 지정해주기  (0) 2024.04.19
..., :, Ellipsis  (0) 2023.09.21
Debugging.디버깅.breakpoint()  (0) 2023.09.20
print().5 Ways  (0) 2022.12.18

..., :, Ellipsis

Python, 파이썬
반응형

참조,설명 Good : https://www.youtube.com/watch?v=3IhPcPCncAU

반응형

'Python, 파이썬' 카테고리의 다른 글

import directory 지정해주기  (0) 2024.04.19
csv 를 읽어 mysql create table 문장 생성  (0) 2024.03.16
Debugging.디버깅.breakpoint()  (0) 2023.09.20
print().5 Ways  (0) 2022.12.18
print.format.text.lpad.rpad  (0) 2022.12.18

Debugging.디버깅.breakpoint()

Python, 파이썬
반응형

# 참조 : https://www.youtube.com/watch?v=WD63ykLOGzs

 

1) 코드(Ex> test.py)에 디버깅할 위치에 breakpoint() 추가

 

2) python test.py 실행

breakpoint() 를 만나며 python debugger 인 (Pdb) 가 뜸.

 

3) (pdb) 명령어

명렁 설명  
소스보기 l
변수보기 변수명 <Enter>, print (변수)
다음 한 줄 실행 n
계속 실행 c
breakpoint 추가 무조건 정지하는 break 줄번호.
- breakpoint 를 만나면 "무조건" break 한다.
- breakpoint 만 등록되며, c 를 실행해야 코드가 실행된다.
- 등록할 때 몇 번째 Breakpoint 인지 "Breakpoint Condition Number" 를 알려준다.
이 번호는 아래 Condition 명령에서 사용된다.
Ex> Breakpoint 1 at test.py # 여기서 1 이 Breakpoint Condition Number 이다.
breakpoint 에 조건 걸기 condition "Breakpoint Condition Number" 조건코드
- 무조건 정지하는 breakpoint 를 특정 조건에서만 정지되도록 변경
- Ex> condition 1 result=="lucky" # 1번 Breakpoint Condition Number 인 무조건 정지하는 breakpoint 를 result == lucky 일때만 정지하는 break 로 변경
- 주로 딥러닝 학습 loss 터질때 사용

4) 주된 사용법

- breakpoint() 가 많으면 소스가 지저분해지고 배포시 일일이 삭제해야 한다.

- 그러니 코드 첫 줄에만 breakpoint() 를 넣고, breakpoint 명령으로 break 위치를 설정하고 c 로 넘어가는 게 편하다.

 

 

반응형

'Python, 파이썬' 카테고리의 다른 글

csv 를 읽어 mysql create table 문장 생성  (0) 2024.03.16
..., :, Ellipsis  (0) 2023.09.21
print().5 Ways  (0) 2022.12.18
print.format.text.lpad.rpad  (0) 2022.12.18
Ubuntu.pip3 설치  (0) 2022.09.27

print().5 Ways

Python, 파이썬
반응형
No Way  
1 print(name + ' : ' + str(age))
2 print(name, ':', age)
3 print(f'{name} : {age}')
4 print('%s : %s' % (name, age))
5 print('{} : {}'.format(name, age))

 

 

반응형

'Python, 파이썬' 카테고리의 다른 글

..., :, Ellipsis  (0) 2023.09.21
Debugging.디버깅.breakpoint()  (0) 2023.09.20
print.format.text.lpad.rpad  (0) 2022.12.18
Ubuntu.pip3 설치  (0) 2022.09.27
python 버전 관리  (0) 2021.12.17

print.format.text.lpad.rpad

Python, 파이썬
반응형

print(f'{text}')

print(f'{text:#<20}') # rpad

print(f'{text:>20}') # lpad

print(f'{text:.^20}') # lrpad ( center text )

 

반응형

'Python, 파이썬' 카테고리의 다른 글

Debugging.디버깅.breakpoint()  (0) 2023.09.20
print().5 Ways  (0) 2022.12.18
Ubuntu.pip3 설치  (0) 2022.09.27
python 버전 관리  (0) 2021.12.17
유튜브 업로드  (0) 2021.04.06

Ubuntu.pip3 설치

Python, 파이썬
반응형

1) sudo curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

2) sudo python3 get-pip.py

3) pip3 # /usr/local/bin/ 에 있음

반응형

'Python, 파이썬' 카테고리의 다른 글

print().5 Ways  (0) 2022.12.18
print.format.text.lpad.rpad  (0) 2022.12.18
python 버전 관리  (0) 2021.12.17
유튜브 업로드  (0) 2021.04.06
기차표 예매 (SRT)  (0) 2021.04.06