Python學習筆記(二) 函式

2021-08-09 17:26:10 字數 2801 閱讀 3732

呼叫函式

abs()

max()

min()

hex()   

整數轉換成十六進製制

資料型別轉換

int()

float()

str()

bool()

定義函式

定義乙個函式要使用

def語句,依次寫出函式名、括號、括號中的引數和冒號

:,然後,在縮排塊中編寫函式體,函式的返回值用

return

語句返回。

def my_abs(x):

if not isinstance(x,(int,float)):

raise typeerror('bad operand type')

if x>=0:

return x

else:

return -x

return none

可以寫為

return

空函式def nop():

pass

pass

語句可以用作佔位符。

引數檢查

isinstance()

返回多個值

import math

def move(x, y, step, angle=0):

nx = x + step *math.cos(angle)

ny = y - step *math.sin(angle)

return nx, ny

返回的實際上還是乙個單一值,返回的乙個

tuple

函式的引數

位置引數

函式的形參

預設引數

def power(x=2):

pass

預設是2

,可以不填,與預設引數不一樣就填引數

預設引數必須指向不可變物件

def add_end(l=none):

if(l==none):

l=return l

可變引數

1.把乙個

list

或tuple

傳進來

defcalc(numbers):

sum=0

for n in numbers:

sum=sum+n*n

return sum

calc([1,2,3])

2.引數前加乙個

* 函式內部接受到乙個

tuple

,使用時可以傳遞任意數量的引數

defcalc(*numbers):

sum=0

for n in numbers:

sum=sum+n*n

return sum

calc(1,2,3)

關鍵字引數

可變引數允許傳遞

0個或任意個引數,這些引數在函式內部自動組裝成

tuple

,而關鍵字引數允許傳遞

0個或任意個含引數名的引數,這些關鍵字引數在函式內部會自動組裝成

dict

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

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

命名關鍵字引數

要限制關鍵字引數的名字,就可以使用命名關鍵字。

使用乙個特殊分隔符*,

*後的引數被視作命名關鍵字引數

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

print('name:',name,'age:',age,'city:',city,'job:',job)

如果函式定義中已經有乙個可變引數,後面的關鍵字引數就不需要乙個特殊分隔符了

命名關鍵字引數必須要傳入引數名,否則就會報錯

引數組合

python

中定義函式,可以使用多種引數組合使用,引數定義的順序必須是:必選引數、預設引數、可變引數、命名關鍵字引數和關鍵字引數。

遞迴函式

遞迴函式代替迴圈,但要注意防止棧溢位

def fact(n):

if(n==1):

return 1

return n*fact(n-1)

尾遞迴,函式返回時呼叫自身,並且

return

不能包含表示式

尾遞迴呼叫時,如果做了優化,棧不會增長,因此,無論多少次呼叫也不會導致棧溢位。

遺憾的是,大多數程式語言沒有針對尾遞迴做優化,python直譯器也沒有做優化

def fact(n):

return fact_iter(n,1)

def fact_iter(num,product):

if(num==1):

return 1

return fact_iter(num-1,num*product)

漢諾塔defmove(n,a,b,c):

if(n==1):

print(a,'-->',c)

else:

move(n-1,a,c,b)

move(1,a,b,c)

move(n-1,b,a,c)可將b

柱視作a柱到c

柱的緩衝區(

buffer)

將a柱上的n-1

個盤子通過

c柱挪到b柱上

將a柱最下面的盤子通過

b柱挪到c柱上

將之前的

n-1盤子從

b柱通過

a柱挪到

c柱上 

Python學習筆記 二 函式

python有很多自帶的函式,在api裡很容易找到 菜鳥教程的python內建函式講的也不錯 這裡先試試幾個能猜的出作用的簡單函式 函式名描述 abs 返回數字的絕對值 abs 1 1 all 判斷給定的可迭代引數 iterable 中的所有元素是否都為 true,如果是返回 true,否則返回 f...

Python學習筆記 函式(二)

序列解包 傳遞引數時,可以用過在實參序列前加乙個 號將其解包,然後傳遞給多個單變數形參 如果函式實參是字典,可以在前面加 號進行解包,等價於關鍵字引數。作用域 變數起作用的 範圍稱為變數的作用域,不同作用域內變數名可以相同,不影響。根據變數可供訪問的作用範圍,分為全域性變數和區域性變數。全域性變數自...

Python基礎函式學習筆記 二

一 格式化列印輸出 乙個輸出時 兩個輸出時 輸出換行 print預設輸出自動加換行,如下所示 rabbits 20 print rabbits cages 15 print cages 結果如下所示 如果要在同一行顯示的話,可以在行末加逗號,如下 二 使用者輸入 兩個函式input和raw inpu...