Python筆記(函式)

2021-07-31 09:34:15 字數 4856 閱讀 4360

函式就是將一些語句集中在一起的乙個部件,

目的是減少我們同一段**的複製貼上,需要的時候以函式呼叫來代替,實現**的復用

函式定義語法:

def 函式名(0個或多個引數):

函式內要執行的**

return 返回值

#函式可以只定義函式名,沒有引數,也沒有返回值

defhello

():print

'hello world!'

# 函式的呼叫

res = hello() #hello world!

print type(res #

# 函式有返回值

# 函式的命名規則:乙個單詞直接小寫

# 多個單詞,每個單詞小寫,以下劃線分隔

defget_list

():return [1,2,3,4]

alist = get_list()

print type(alist),alist

# 函式可以有多個return語句,遇到return語句,跳出函式

defget_smaller

(x,y):

if xreturn x

print

'x is smaller'

else:

return y

smaller = get_smaller(1,2)

print smaller

# 函式有引數

# 引數:形參和實參,形參和實參要一一對應

defadd

(x,y):

return x+y

sum = add(1,2)

print sum

# 引數傳遞不正確的情況

# sum = add()

#typeerror: add() takes exactly 2 arguments (0 given)

# sum = add(1,2,3)

#typeerror: add() takes exactly 2 arguments (3 given)

# 預設引數

# 為了提高程式的健壯性,

# 如果我們想在x,y值不傳的時候,也給出乙個預設的結果,就需要用到預設引數

# 引數有預設值之後,可以根據需要傳遞實參

defadd

(x =2,y=3):

return x+y

sum = add()

print sum

sum = add(1)

print sum

sum = add(1,2)

print sum

# 函式的引數可以是任意型別

defprint_item

(x):

print x

print_item(1)

print_item(1.0)

print_item('string')

print_item([1,2,3])

print_item((1,2,3))

# 函式的引數可以是不同型別

defprint_userinfo

(name,age):

print

'username is %s and age is %d'%(name,age)

print_userinfo('xiaoming',18)

# 可以將要傳遞的引數放在tuple中

atuple = ('xiaoming',18)

print_userinfo(*atuple)

defprint_userinfo

(name='name',age=18):

print

'username is %s and age is %d'%(name,age)

# 要傳遞的引數放在字典中

adict =

print_userinfo(**adict)

# key不對應的情況

adict =

print_userinfo(**adict)

#typeerror: print_userinfo() got an unexpected keyword argument 'height'

# 可變長度的引數

defprint_userinfo

(name,age,*tuple_args,**dict_args):

print

'username is %s and age is %d'%(name,age)

print tuple_args

print dict_args

print_userinfo('xiaoming',18)

#username is xiaoxing and age is 18

#()#{}

# 傳遞引數有冗餘時,直接傳遞會報錯,如何解決

# 冗餘引數會傳遞到tuple_args

print_userinfo('xiaoming',18,170)

#username is xiaoming and age is 18

#(170,)

#{}atuple = ('xiaoming',18,170)

print_userinfo(*atuple)

#username is xiaoming and age is 18

#(170,)

#{}# 冗餘引數存放到dict_args

print_userinfo(name = 'xiaoming',age = 18,height = 170)

#username is xiaoming and age is 18

#()#

# 冗餘引數170,'xiaohong'存放到tuple_args,height = 170 存放到dict_args

print_userinfo('xiaoming',18, 170,'xiaohong',height = 170)、

#username is xiaoming and age is 18

#(170, 'xiaohong')

## 重複傳值給name引數

print_userinfo('xiaoming',18, 170,name = 'xiaohong',height = 170)

#typeerror: print_userinfo() got multiple values for keyword argument 'name'

# 函式內部可以呼叫其他函式

defcal

(x,y):

print x+y

res = cal(1,2)

# 如果乙個函式在內部呼叫自身,這個函式叫做遞迴函式

# 舉例:求乙個數n的階乘

# n的階乘為n*(n-1)*(n-2)...*1

# n! = n*(n-1)!

# n為1的時候,階乘為1

deffactorial

(n):

if n==1:

return

1else:

return n * factorial(n - 1)

print factorial(5)

# 變數的作用域問題

# 根據變數宣告的位置的不同,變數存在不同的作用域:全域性,區域性

# 全域性變數,區域性變數

# 變數的作用域限制了你在哪個地方可以訪問哪個變數

global_var = 'global'

deffoo

(): local_var = 'local'

print global_var+local_var

foo()

# foo中可以對所有的變數進行訪問,但是函式外只能訪問全域性變數,無法訪問函式的內部變數

# local_var是在函式體中定義的,只能在函式foo中使用

# global_var是在函式體外定義的,可以在指令碼的任意乙個位置訪問

print global_var

# print local_var

# x = 'xiaoming'

# def fun():

# x='xiaohong'

# print x

# fun()

# print x

# 函式內部也可以定義全域性變數

# 使用global關鍵字

# 注意:必須要先呼叫函式,函式體中定義的全域性變數才能生效

x = 'xiaoming'

deffun

(): x='xiaohong'

global global_y

global_y = 'xiaofang'

print x

fun()

print x

print global_y

# 如何在函式中修改全域性變數的值

x = 'xiaoming'

deffun

():global x

x='xiaohong'

print x

fun()

print x

# 匿名函式,lambda

deffunc

(x,y):

return x+y

func = lambda x,y:x+y

# reduce()函式

list1 = [1,2,3]

defadd

(x,y):

return x+y

print reduce(add,list1)

print reduce(lambda x,y:x+y,range(1,101))

Python筆記 函式

def function name 形參1,形參2,形參3.形參只是用來佔位的,函式呼叫時傳入的引數才是真正的引數 執行的語句 return 函式的返回值就是執行的結果,不是所有的函式都必須要有返回值 function name 實參1,實參3,實參3.函式呼叫時傳入的引數時實參 def tell ...

Python筆記 python基礎 函式

函式是組織好的,可重複使用的,用來實現單一,或相關聯功能的 段 python內建了很多有用的函式,我們可以直接呼叫。要呼叫乙個函式,需要知道函式的名稱和引數。python內建函式官方文件 例如求絕對值的函式abs,只有乙個引數 a abs 100 print a 輸出結果 100 b abs 20 ...

python 筆記2 函式

a abs 變數a指向abs函式 a 1 所以也可以通過a呼叫abs函式 1def my abs x if x 0 return x else return x所以,定義預設引數要牢記一點 預設引數必須指向不變物件!例如none或常量 本質是乙個list和tuple 但是可以在引數上加個 號 def...