全域變數 局部變數 遞迴

來源:互聯網
上載者:User

標籤:end   列表   無法   pre   自身   影響   跳過   倒數   子程式   

#!/user/bin/env python
# -*- coding:utf-8 -*-
# 1.局部變數,全域變數,沒有縮排的變數就是全域變數。有縮排的被成為局部變數,子程式裡的變數為局部變數。全域變數盡量遵循用大寫表示,局部
# 變數我們盡量用小寫來定義。例:
# name ="張三" #這裡定義的為全域變數
# def ce():
# name="測試" #這個就是局部變數。
# print(name)
# print(name)
# ce()
# 2.global在子程式裡引用全域變數。
# NAME="slow"
# def sudu():
# global NAME
# NAME="ZHANSAN"
# print(NAME)
# print(NAME)
# sudu()
# print(NAME)
# 錯誤的樣本:
# Name="zhang"
# def test():
# Name="ss"
# global Name
# print(Name)
# 3.變數讀取的時候優先讀取局部變數,能讀取全域變數,但無法對其賦值。但對於可變變數,可以對其進行內部操作,例列表,字典等可以使用它們自
# 身的方法 例:
# name=[2,3,4,5]
# def test(x):
# global name
# name.append(x)#可以使用列表的內建方法
# test("22")
# print(name)

# 4變數的幾種存在方式,有聲明局部變數的時候,無global優先讀取局部變數,有global的時候讀取全域變數。
# 無聲明局部變數,沒有global
# name="zhansan"
# def test(x):
# print(x)
# print(name)
# print(name)
# test("zs")
# 有聲明 有global的
# name="lisi"
# def test():
# global name
# name="wangwu"
# print(name)
# print(name)
# test()
# print(name)
# 無聲明,無global的
# ls=[3,4,5,6]
# def xz():
# ls.extend([77,88,99])
# print(ls)
# xz()
# print(ls)
# 5,嵌套和global的指向最外層的變數,nonlcal上層的指向,dubug斷點測試程式的指向
# name="第一層"
# def er():
# name="第二層"
# print(name)
# def san():
# nonlocal name
# name="第三層"
# print(name)
# def tsi():
# name="第四層"
# print(name)
# tsi()
# print("4")
# san()
# print(name)
# print(name)
# er()
# 6.風濕理論,函數即變數
# 錯誤樣本:
# def test1():
# name=13
# test2()
# 在python內部中,每當遇到def就會划出一塊記憶體空間,把def和邏輯代碼塊作為字元儲存下來,這和變數的形式是一樣的,當我們不調用它的時候,編譯
# 後,該函數即已存在,所以無論順序的先後是不影響其調用的
# def test1(x):
# test2()
# print(x)
# def test2():
# print("x2")
# test1(13)
# 最好的體現還是在此樣本:
# name="第一層"
# def er():
# name="第二層"
# print(name)
# def san():
# nonlocal name
# name="第三層"
# print(name)
# def tsi():
# name="第四層"
# print(name)
# tsi()
# print("4")
# san()
# print(name)
# print(name)
# er()
# 第一層name->跳過整段def er的代碼塊->倒數第二行print,往下走遇到er()->跳回代碼def er()繼續執行到def san()跳過整段代碼
# 執行到san()->往回跳到def san():繼續執行到 def si()跳到tsi()執行tsi函數,執行往後跳到->tsi()下的print->san()下的print
# 7.遞迴,函數內部可以調用別的函數,如果在函數裡調用自身我們就稱為遞迴,遞迴理解起來比較費勁。。。遞迴遵循的兩個原則:
# (1) 回溯階段必須要有一個明確地結束條件
# (2) 每進入下一次遞迴時,問題的規模都應該有所減少(否則,單純地重複調用自身是毫無意義的)
# 樣本1:
# def test(x):
# print(x)
# if int(x /2) == 0:
# return x
# res=test(int(x/2))
# return res
# z=test(10)
# print(z)
# # 樣本2:
# renyuan=["張三","李四","王五","趙六","黃七"]
# def wenlu(x):
# person=x.pop(0)
# if person =="黃七":
# print("%s說:你所說的地方在XX大街,xx路",person)
# else:
# wenlu(person)
# print("%s說:我也不知道我幫你問問吧",person)
# return person
# wenlu(renyuan)

全域變數 局部變數 遞迴

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.