自學python筆記7 函式引數與遞迴函式

2021-08-21 18:16:12 字數 1635 閱讀 3115

#函式引數

def power(x):

return x * x

print(power(10))

def power(x,n = 2):#n=2為設定的預設引數,預設引數應設定為不變數,如設定成可變數,則每次呼叫結束,如果該引數變了,下次呼叫也跟著變了

sum = 1

while(n>0):

sum = sum * x

n = n - 1

return sum

print(power(2,3))

print(power(2))

print(power(2,4))

#可變引數

def calc(*numbers):#numbers可以作為乙個list或者tuple傳進來

sum = 0

for n in numbers:

sum = sum + n

return sum

print(calc(1,2,3,4))

#關鍵字引數,關鍵字引數在函式內部自動組轉為乙個dict

def person(name, age, **other):

print('name:',name,'age:',age,'other:',other)

person('laizi',23,city = 'sichuang')

#命名關鍵字引數,限制關鍵字引數的名字,命名關鍵字引數必須傳入引數名,這和位置引數不同

def person1(name, age, *, city, job):

print(name, age, city, job)

person1('bob', 24, city = 'beijing',job = 'engineer')

'''1:預設引數一定要用不可變物件

2:*args 是可變引數, args 接收的是乙個 tuple, **kw 是關鍵字引數, kw 接收的是乙個 dict。

'''#遞迴函式:乙個函式在內部呼叫自身本身。存在棧溢位風險

def jiecheng(n):

if n == 1:

return 1

return n * jiecheng(n-1)

print(jiecheng(4))

#尾遞迴解決棧溢位,在呼叫一次函式就得出想要的值,不用像上乙個函式那樣等待下次呼叫返回的值後在得到想要的值,從而將多個棧變為乙個棧

def jiecheng1(n,product):

if n == 1:

return product

else:

product = n * product

n = n - 1

return jiecheng1(n,product)

print(jiecheng1(5,1))

#假設有n片,移動次數是f(n).顯然f(1)=1,f(2)=3,f(3)=7,且f(k+1)=2*f(k)+1。。此後不難證明f(n)=2^n-1。n=64時,

def tower_f_hanoi(n):

if n == 1:

return 1

else:

n = n -1

return 2 * tower_f_hanoi(n) + 1

print(tower_f_hanoi(64))

Python 自學筆記7 函式

1.使用函式的目的 模組化,便於處理 2.函式的定義 def function 2.函式文件 def myfirstfunction name 函式文件在函式定義的最開頭部分,此部分就是函式文件,用不記名字串表示 print i love fishc.com 函式的文件字串可以按如下方式訪問 myf...

Python自學筆記 7 迴圈

for迴圈 for x in 迴圈就是把每個元素代入變數x,然後執行縮排塊的語句。比如我們想計算1 10的整數之和,可以用乙個sum變數做累加 sum 0 for x in 1,2,3,4,5,6,7,8,9,10 sum sum x print sum range 函式,可以生成乙個整數序列,再通...

Python自學筆記004 函式

def function a,b print this is a function.c a b print a b c 這裡執行之後需要我們呼叫這個函式 function 3,4 這裡面表示傳入函式的引數值 this is a function.a b 7如果在呼叫時忘記了引數的位置,只記得引數的名...