1. 程式人生 > >Python 函式的巢狀

Python 函式的巢狀

# 函式的互相呼叫
def func1():
    print("我是神器的func1")

def func2():
    func1()
    print("我是神器的func2")

def func3():
    print("我是神器的func3")
    # func5()

def func4():
    func3()
    print("我是神器的func4")

def func5():
    func2()
    func3()
    print("我是神器的func5")

def func6():
    func5()
    print("我是神器的func6")
    func3()
    func1()

func6()

def outer():
    def inner():
        print("我的天哪")
    print("還可以這樣寫???")
    inner()

outer()

# inner() # 在全域性不能找到區域性的內容

def func1():
    print("1")
    def func2():
        print("2")
        def func3():
            print("3")
        print("4")
        func3()
        print(5)
    print("6")
    func2()
    print("7")

func1()


# 全域性變數一般是不能隨意的修改的
a = 10
def func():
    # 慎用.
    global a  # global 表示從全域性把一個變數引入到區域性, 後面使用的a都是全域性變數
    a += 10 # ?? a = a + 10 # 現在的a是全域性的, 你現在檢視改全域性變數
    print("裡面的列印",a)
func()
print("外面的列印", a)


a = 10
def func():
    def inner():
        # 慎用.
        global a  # global 表示從全域性把一個變數引入到區域性, 後面使用的a都是全域性變數
        a += 10 # ?? a = a + 10 # 現在的a是全域性的, 你現在檢視改全域性變數
        print("裡面的列印",a)
    inner()
func()
print("外面的列印", a)

# nonlocal  在區域性, 尋找離他最近的外層的一個變數
a = 50
def func1():
    # a = 10 # 區域性
    def func2():
        nonlocal a # 不找全域性, global找全域性
        a += 10 # a = a + 10 python不讓這麼幹
        print("func2", a)
    func2()
    print(a)
func1()
print(a)

# 如果沒有nonlocal和global 查詢的順序: 自己, 上一層, 上一層, 上一層

def func0():
    a = 50
    def func1():
        a = 10 # 區域性
        def func2():
            nonlocal a # 不找全域性, global找全域性
            a += 10 # a = a + 10 python不讓這麼幹
            print("func2", a)
        func2()
        print(a)
    func1()
    print(a)
func0()


a = 1
def fun_1():
    a = 2
    def fun_2():
        nonlocal a
        a = 3
        def fun_3():
            a = 4
            print(a)
        print(a)
        fun_3()
        print(a)
    print(a)
    fun_2()
    print(a)
print(a)
fun_1()
print(a)

flag = False

def login():
    global flag
    uname = input("使用者名稱:")
    upwd = input("密碼:")
    if uname == "alex" and upwd == "123":
        flag = True
    else:
        flag = False

def fatie():
    if flag == True:
        print("可以發帖")
    else:
        print("滾去登入")

login()

fatie()
fatie()
fatie()
fatie()