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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

python 函数递归一次增加一次变量_python3--函数(函数,全局变量和局部变量,递归函数)...

發布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 函数递归一次增加一次变量_python3--函数(函数,全局变量和局部变量,递归函数)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.1函數

1.1.1什么是函數

函數就是程序實現模塊化的基本單元,一般實現某一功能的集合。

函數名:就相當于是程序代碼集合的名稱

參數:就是函數運算時需要參與運算的值被稱作為參數

函數體:程序的某個功能,進行一系列的邏輯運算

return 返回值:函數的返回值能表示函數的運行結果或運行狀態。

1.1.2函數的作用

函數是組織好的,可重復使用的,用來實現單一,或者相關功能的代碼。

函數能夠提高應用的模塊性,和代碼的重復利用率

我們已近知道python提供了許多內置函數,比如print(),我們自已創建的函數稱為內置函數

1.1.3定義函數的語法

def函數名(參數):

函數體return 返回值內容

1.1.4函數定義規則

函數代碼以def關鍵詞開頭,后接定義函數的名稱和圓括號,冒號():

函數內容以冒號":"開始,并且縮進

函數內容的第一行內容可選擇性使用文檔字符串---用來定義該函數的說明

函數的返回值: return ?[返回值內容] ?用于結束函數,返回一個值,表示程序執行的結果。

函數不帶return 默認返回None ? 返回值可以是任何類型的數據(數字,字符串,函數,列表,元祖,字典等),也可以是一個表達式

函數參數:任何傳入參數和自變量必須放在圓括號中間,圓括號之間用于定義參數。

1.1.5函數調用

定義函數語法

defprintinfo():print("hello world")return

調用函數

printinfo()#函數執行結果

hello world

查看函數返回值

print(printinfo())#結果

hello world

None#默認函數值返回類容

其他返回值示例

defprintinfo():print("hello world")return [111+222]print(printinfo())#結果

hello world

[333] #返回值內容

1.1.5函數參數

注:形參和實參(定義函數時,圓括號(參數)中的所有參數都是形式參數也稱為形參,調用函數中,圓括號(參數)中的參數稱為實際參數,也叫實參)

1)必須參數::

2)關鍵字參數:

3)默認參數:

4)可變參數(*args,**kwargs):

1.必須參數:

從字面理解:必須要傳入參數

傳入的參數:與定義的形參順序一一對應

defstuinfo(name,age):print(name,age)return

#在不傳入參數

stuinfo() #調用函數

#函數執行結果

TypeError: stuinfo() missing 2 required positional arguments: 'name' and 'age'

#報錯,提示類型錯誤,該函數,缺少兩個位置參數

不傳入參數

defstuinfo(name,age):print(name,age)returnstuinfo("zhangsan",18)#函數執行結果

zhangsan 18

傳入參數

2.關鍵字參數

defstuinfo(name,age,hobby):print(name,age,hobby)return

#參數位置匹配,關鍵字參數,與形參的位置順序無關,

stuinfo(age=19,name="lisi",hobby="run")#name= age= hobby=就是關鍵字參數

#函數執行結果

lisi 19 run

關鍵字參數

3.默認參數

默認參數必須指向不變的對象

當函數有多個參數,把變化大的參數反正前面,變化小的參數放在后面。變化小的參數就作為默認參數。

默認參數好處:降低調用函數的難度

#默認參數,可以直接使用用,也可以修改默認參數值

def grade(name,age,city="BeiJing"): #city="BeiJing" 就是默認參數

print(name,age,city)#grade("yangjian",age=18)

grade("lala",age=18,city="shanghai")#grade函數執行結果

lala 18 shanghai

默認參數

4.可變參數

*args ?**args

用途:在定義函數需要,每個定義函數功能的都可以繼續優化,所以我們需要用動態參數

如果把參數寫死了,后期繼續修改完善的功能的,修改該函數功能則會相當麻煩

*args ?結果類型是元祖,傳遞值是任意類型

def test(*args):print(args)

test(123456,[12,45,88],{"name":"qw","age":15}) #可以傳遞任意參數的類型#函數執行結果

(123456, [12, 45, 88], {'name': 'qw', 'age': 15})

**kwargs結果類型是字典,傳遞值是以key=value方式傳入

def test1(**kwargs):print(kwargs)

test1(name="xiha",age="12")#執行結果

{'age': '12', 'name': 'xiha'}

函數* 和 ** 解包

#*

def test(*args):print(args)

test(*[1,2,3,4,5,6,7,8,9]) #*參數解包,把【元素】 循環出來,添加到元祖中#結果

(1, 2, 3, 4, 5, 6, 7, 8, 9)

*

def test1(**kwargs):print(kwargs)

test1(**{"hobby":456,"number":789}) #**參數解包,把key:value 循環出來,添加到字典中#結果

{'number': 789, 'hobby': 456}

**

函數參數組合

def f2(a, b, c=0,*args,**kwargs):print('a =', a, 'b =', b, 'c =', c, args,kwargs)

f2(12,b=12,c=89,aa="as",bb="xxx")#結果

a = 12 b = 12 c = 89 () {'bb': 'xxx', 'aa': 'as'}

函數參數總結:

1.形參的位置順序,必須與實參的順序一一對應,缺一不行,多一不行

2.關鍵字參數,無須一一對應,缺一不行,多一不行

3.位置參數必須在關鍵字參數左邊

4.默認參數一定要用不可變對象,如果是可變對象,程序運行時會有邏輯錯誤

1.2全局變量和局部變量

在子程序中定義的變量稱為局部變量,只在子程序內部生效,

在程序一開始定義的變量稱為全局變量

全局變量作用域是整個程序,局部變量作用域是定義該變量的子程序。

當全局變量與局部變量同名時:在定義局部變量的子程序內,局部變量起作用,在其他地方全局變量起作用

name = "xixi" #全局變量

defchange_name():

name= "haha" #局部變量只在函數局部作用域內生效

print("我的名字",name)returnchange_name()print(name)defme():global name #聲明name是全局變量 global

name = "yj" #修改name全局變量的值

print(name)returnme()

如果全局變量是可變的數據類型,函數可以對全局變量內部直接進行修改

eng = ["merry","jack","petter"]defchang():

eng.append("mali")print(eng)returnchang()

總結:

一般寫程序變量的命名規則

###全局變量變量名大寫

###局部變量變量名小寫

函數優先讀取局部變量,能讀全局變量,無法對全局變量重新賦值操作,#全局變量是不可變的類型

全局變量是可變類型,函數可以對全局變量進行操作

函數中有global關鍵字,變量本質就是全局變量,可讀取全局變量,也可操作全局變量

1.3函數之間嵌套

name = "YangJIan" #最外層

def change_name(): #第二層

name = "YangJIan2"

def change_name2(): #第三層

name = "YangJIan3"

print("第3層打印", name)

change_name2()#調用內層函數

print("第2層打印", name)

change_name()#先執行局部函數的打印,

print("最外層打印", name)#第3層打印 YangJIan3#第2層打印 YangJIan2#最外層打印 YangJIan

注:多層函數嵌套,子級函數,只在子級函數內部生效。父級函數能調用子級函數的功能

1.4遞歸函數

1.在函數內部,可以調用其他函數,如果一個函數在內部調用自身本身,這個函數就是遞歸函數。

2.在使用遞歸策越是,必須有一個明確的敵對結束條件,稱為遞歸出口

函數調用的時候,每次調用時要做地址保存,參數傳遞等。

如果函數包含了對其自身函數的調用,該函數就是遞歸。如下

deffoo(n):#實現階乘

if n == 1:return n #當滿種條件n==1才執行return 操作

res = n*foo(n-1) #調用自已本身的函數的結果(再判斷條件是否滿足條件)給res ,

returnresprint(foo(5))#120

遞歸算法所所體現的重復一般有的要求:

1.每次調用在上次規模上都有有所減小:

2.每次遞歸調用都是有明確條件的。

3.相領兩次的重復之間有緊密的聯系,前一次要為后一次做準備(通常前一次的輸出(返回值結果))就作為后一次的輸入;

4.在問題的規模得到滿足條件時,而不再進行遞歸調用。

總結

以上是生活随笔為你收集整理的python 函数递归一次增加一次变量_python3--函数(函数,全局变量和局部变量,递归函数)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。