1. 程式人生 > >Python基礎-函數初識

Python基礎-函數初識

col NPU 問題 QQ brush orm {} urn with

一 函數的作用

1. 解決代碼復用的問題

2. 提高代碼的可維護性

3. 程序的組織結構更清晰,提高程序的可讀性

1.1 函數的定義與調用

# 定義函數:
def my_len():
    ‘‘‘計算s1的長度‘‘‘
    s1 = fdsgdfkjlgdfgrewioj
    count = 0
    for i in s1:
        count += 1
    # print(count)

my_len()  # 函數名+()  執行函數 #函數的調用
定義:
    def  關鍵詞開頭,空格之後接函數名稱和圓括號(),最後還有一個‘:‘。
    def  是固定的,不能變  它是定義函數的關鍵字
    空格: 為了將def與函數名分開,必須空!
    函數名: 函數名的定義與變量一致,只能包含字符串、下劃線和數字,且不能以數字開頭。要求函數名盡量簡短,並且能表達函數功能
    括號: 必須添加
    
    註釋:每一個函數都應該對功能和參數進行相應的說明,應該寫在定義函數的下一行,一增強代碼的可讀性。
    調用: 就是 函數名()   要記得加上括號

1.2 函數的返回值 return

‘‘‘
    1,遇到return,結束函數。
    def func1():
        print(111)
        return
        print(222)
    func1()  #只打印111 
    2,給函數的調用者(執行者)返回值。
        無 return 返回None
        return 不寫 或者 None 返回None
        return 返回單個數.
        return 返回多個數,將多個數放在元組中返回。
‘‘‘
s1 = fdsgdfkjlgdfgrewioj
##函數返回值是str類型 def my_len(): count = 0 for i in s1: count += 1 return 666 ##將666返回給函數執行結果 print(my_len(),type(my_len()) ## 返回多個值的時候,會將多個值放在元組中 def my_len(): count = 0 for i in s1: count += 1 return 666,222,count,老男孩 print(my_len(),type(my_len())) #在元組中分別賦值:
def my_len(): count = 0 for i in s1: count += 1 return 666,222,count ret1,ret2,ret3 = my_len() # (666, 222, 19,) print(ret1) print(ret2) print(ret3)

1.3 函數的傳參

1.3.1 參數的定義

技術分享圖片
li = [1, 2, 3, 43, fdsa, alex]
s1 = fdsgdfkjlgdfgrewioj
def my_len(a):    # 函數的定義 ()裏放的是形式參數,形參
    count = 0
    for i in a:
        count += 1
    return count
ret = my_len(li)  # 函數的執行() 實際參數,實參
print(ret)
print(len(s1))

# 從實參角度
    #1,位置參數。 必須一一對應,按順序
def func1(x,y):
    print(x,y)
func1(1, 2)
    #2,關鍵字參數。必須一一對應,不分順序。
def func1(x,y,z):
    print(x,y,z)
func1(y=2,x=1,z=5,)

# 參數練習
def max(a,b):
    if a > b:
        return a
    else:
        return b
print(max(100,102))

#簡寫形式
def max(a,b):return a if a > b else b
print(max(100,102))

參數的定義
參數的定義

1. 形參:在函數名後面的()中的參數,為形式參數,稱為形參

2. 實參:在調用函數時寫入()的參數,為實際參數,稱為實參。

3. 從實參角度,又分為:

  1) 位置參數:按實際位置、順序一一對應的參數

  2)關鍵字參數:a=b,必須一一對應,但不分順序

  3)混合參數: 一一對應,切關鍵字參數必須在位置參數後面

# 混合參數。 關鍵字參數必須在位置參數後面
def func2(argv1,argv2,argv3):
    print(argv1)
    print(argv2)
    print(argv3)
func2(1,2,argv3=4)

4.從形參角度:

  1)位置參數,必須一一對應,按順序

  2)默認參數,必須在位置參數後面

def register(name,sex=):
    with open(register,encoding=utf-8,mode=a) as f1:
        f1.write({} {}\n.format(name,sex))

while True:
    username = input(請輸入姓名:/q 或者 Q 退出)
    if username.upper() == Q:break
    if a in username:
        sex = input(請輸入性別:)
        register(username,sex)
    else:
        register(username)

  3)動態參數 *args *kwargs 萬能參數

# args 與 kwargs接收的內容
def func2(*args,**kwargs):
    print(args)  # 元組(所有位置參數)
    print(kwargs)  # 字典,所有關鍵字參數
func2(1,2,3,4,5,6,7,11,alex,老男孩,a=ww,b=qq,c=222)

混合參數中,arte與kwargs的位置
# 位置參數,*args, 默認參數
def func3(a,b,*args,sex=):
    print(a)
    print(b)
    print(sex)
    print(args)
func3(1,2,老男孩,alex,wusir,sex=)
# 位置參數,*args, 默認參數, **kwargs
def func3(a,b,*args,sex=,**kwargs):
    print(a)
    print(b)
    print(sex)
    print(args)
    print(kwargs)
func3(1,2,老男孩,alex,wusir,name=alex,age=46)

args與kwargs的使用

def func1(*args,**kwargs):  # 函數的定義 * 聚合。
    print(args)
    print(kwargs)
l1 = [1,2,3,4]
l11 = (1,2,3,4)
l2 = [alex,wusir,4]
# func1(l1,l2,l11)  。
# func1(*l1,*l2,*l11)  # 函數的執行:* 打散功能。
# func1(1,2,3,4,‘alex‘,‘wusir‘,4,1,2,3,4)
dic1 = {name1:alex}
dic2 = {name2:laonanhai}
func1(**dic1,**dic2)  # * 打散功能

Python基礎-函數初識