日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

变量与递归函数

發(fā)布時間:2023/12/2 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 变量与递归函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
變量與遞歸函數(shù)

一、變量

變量分為全局變量和局部變量。

python中全局變量和局部變量的最大區(qū)別在于局部變量只能通過函數(shù)去訪問,而全局變量可以直接訪問。

舉個例子:

name = 'linxu' #全局變量 def change_name():name='python' #局部變量print(name) #打印局部變量,結(jié)果為:python change_name() print(name) #打印全局變量,結(jié)果為:linux

如果將函數(shù)內(nèi)的局部變量轉(zhuǎn)換為全局變量,需要使用到關鍵字global引用全局變量。

name = 'linxu' #全局變量 def change_name():global name #引用全局變量,可將函數(shù)內(nèi)后面出現(xiàn)局部變量name轉(zhuǎn)換為全局變量name='python' #局部變量print(name) #結(jié)果為:python change_name() print(name) #結(jié)果為:python

函數(shù)的內(nèi)部無global關鍵字,優(yōu)先讀取局部變量,無局部變量然后能讀取全局變量,無法對全局變量重新賦值,但是對于可變類型,可以對內(nèi)部元素進行操作。
函數(shù)的內(nèi)部有global關鍵字,變量本質(zhì)上就是全局的那個變量,可讀取可賦值。

如果需要引用到上一級變量,則使用關鍵字nonlocal:

name = "張三" def change_name():name = "李四"def change_name1():nonlocal namename = "王五"change_name1()print(name) #結(jié)果為:王五 print(name) #結(jié)果為:張三 change_name() print(name) #結(jié)果為:張三

講到變量就要提提風濕理論,風濕理論的定義:函數(shù)即變量。

風濕理論總的來講就是代碼從上到下執(zhí)行,遇到定義的函數(shù)體,內(nèi)存便為其開辟空間,但不執(zhí)行。程序需要調(diào)用函數(shù)時,才會執(zhí)行函數(shù)體的內(nèi)容。如果一個函數(shù)還未開辟空間就先調(diào)用,就會報錯。

def foo():print("this is foo")bar() foo() def bar():print("this is bar")

這段代碼就會報錯,因為bar()函數(shù)未被開辟空間就先調(diào)用了。

二、遞歸函數(shù)

遞歸調(diào)用是函數(shù)嵌套調(diào)用的一種特殊形式,函數(shù)在調(diào)用時,直接或間接調(diào)用了自身,就是遞歸調(diào)用。 def calc(n):print(n)if int(n/2) == 0:return nres = calc(int(n/2)) #遞歸調(diào)用return res calc(10)

總結(jié)遞歸的調(diào)用:

  • 必須有一個明確的結(jié)束條件
  • 每次進入更深遞歸時,問題規(guī)模相比上次遞歸都應有所減少
  • 遞歸效率低

遞歸作業(yè):遞歸問路,假設lisi知道路

import time person_list = ['alex','zhangsan','lisi','wangwu'] def ask_way(person_list):if len(person_list) == 0:return '沒人知道路'person = person_list.pop(0)if person == 'lisi':return '%s說:我知道路,就是。。。' %personprint('hi 朋友[%s],請問路怎么走' %person)print('%s回答道:我不知道,不過我可以幫你問%s' %(person,person_list))time.sleep(2)res = ask_way(person_list)print('%s問的結(jié)果是:%res' %(person,res))return res res = ask_way(person_list) print(res)

?

轉(zhuǎn)載于:https://www.cnblogs.com/lzc69/p/11098698.html

總結(jié)

以上是生活随笔為你收集整理的变量与递归函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。