python

[python] 변수의 scope | random 함수

전감자(◔◡◔) 2022. 9. 26. 20:58

 

변수의 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