변수의 scope
'''
변수 scope
1) 개념
선언된 변수 사용 가능한 범위(scope,context)를 의미한다.
2) python의 변수 scope
==> 함수 scope를 따른다.
즉, 함수내에서 선언된 변수는 함수 안에서만 사용이 가능하다.
3) 변수의 종류
가. 전역 변수(global 변수)
==> 함수 밖에서 선언된 변수
나. 지역 변수(local 변수)
==> 함수 내에서 선언된 변수
'''
n=10 #전역변수(global 변수)
def fun():
x=100
print("fun",x)
fun()
#print(x)Error발생 지역변수를 함수 밖에서 쓸 수 없음
'''
nonlocal 및 global 키워드
1. 모든 함수는 중첩이 가능하다.
2. 중첩된 함수(mbc함수)는 global 영역에서 직접 호출이 불가능
'''
# 1. 모든 변수명이 다른 경우
n=10 # 전역 변수 ( global 변수)
def kbs():
n2=20 # 지역변수 (local 변수)
print("mbc:", n, n2)
def mbc():
n3=30 # 지역 변수(local 변수)
print("mbc:",n,n2,n3)
mbc()
kbs()
print(n)
#print(n2) 에러
#print(n3) 에러
# 2. 모든 변수명을 모두 동일하게 지정
n=10 # 전역 변수 ( global 변수)
def kbs():
n=20 # 지역변수 (local 변수)
print("kbs2:", n) #kbs2: 20
def mbc():
n=30 # 지역 변수(local 변수)
print("mbc2:",n)#mbc2: 30
mbc()
kbs()
# 3. 모든 변수명을 모두 동일하게 지정
n=10 # 전역 변수 ( global 변수)
def kbs():
n=20 # 지역변수 (local 변수)
print("kbs3:", n) #kbs3: 20
def mbc():
print("mbc3:",n)#mbc3:20
mbc()
kbs()
# 4. 모든 변수명을 모두 동일하게 지정
n=10 # 전역 변수 ( global 변수)
def kbs():
n=20 # 지역변수 (local 변수)
print("kbs4:", n) #kbs3: 20
def mbc():
#n=30 #해결 1 (n을 먼저 선언, n=30)
#nonlocal n # 해결 2 (가장가까운, n=20)
#global n # 해결 3 (전역 변수 n을 사용 ,n=10)
print("mbc4:",n)#mbc3:20
#n=30 #UnboundLocalError: local variable 'n' referenced before assignment
mbc()
kbs()
랜덤함수
'''
랜덤함수
1) import random
2) 랜덤함수 사용?
random 함수명
'''
import random
#print(dir(random))
'''
'BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI',
'_Sequence', '_Set', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__',
'__name__', '__package__', '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp',
'_inst', '_log', '_os', '_pi', '_random', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator',
'_urandom', '_warn',
'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits',
'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randint', 'random', 'randrange',
'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate'
'''
#help(random.randint)
print("0. random.seed()==> 랜덤값 고정",random.seed(20))
print("1. random.randint(a,b), a와 b 포함됨:",random.randint(1,3))#1~3사이 정수 랜덤하게 반환
print("2. random.random,[0,1)=> 0<= <1 사이의 값 랜덤하게 반환:",random.random())
print("3. random.randrange(start,stop=None,step=1)",random.randrange(1,10,2)) #randint()변형 [a,b) 사이 정수
print("4. random.choice(집합형):",random.choice(["a","b","c"]))
x=["a,b,c"]
random.shuffle(x)
print("5. random.shuffle(집합형):",x)
'python' 카테고리의 다른 글
[python] class 객체생성 | 생성자 (0) | 2022.09.26 |
---|---|
[python] filter vs map (0) | 2022.09.26 |
[python] generator 함수 (1) | 2022.09.26 |
[python] lambda 함수 (0) | 2022.09.26 |
[python] 일급객체 (0) | 2022.09.26 |