溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python學習筆記3:函數和參數

發布時間:2020-07-11 02:26:03 來源:網絡 閱讀:273 作者:young27 欄目:開發技術

函數

函數的參數和返回值

  • 形參(形式參數): 在函數定義的時候用到的參數沒有具體值,只是一個占位的符號,成為形參,下例中的peison
  • 實參(實際參數): 在調用函數的時候輸入的值:下例中的明月
def hello(person):
    print("{0}, 你腫么咧".format(person))
    print("Sir, 你不理額額就走咧")

p = "明月"
hello(p)
  • 返回值: 返回函數的執行結果:return
    • 如果沒有return,默認返回一個None
    • 函數一旦執行return語句,則無條件返回,函數后面的語句不在執行:下例中aaa不打印,后面的return語句不執行
    def hello(person):
    print("{0}, 你腫么咧".format(person))
    return "哈哈,我提前結束了"
    print("aaa")
    return "我已經跟{0}打招呼了,{1}不理我".format(person, person)

p = "LiYing"
rst = hello(p)
print(rst)

參數

  • 參數參考資料
  • python參考資料: headfirst python -> 零基礎入門學習python(小甲魚),本講義參考的是流暢的python-->習題-->后期可以考慮騰訊公開免費課
  • 參數分類
    • 普通參數:name,list
    • 默認參數: name="none",addr="noaddr"
    • 關鍵字參數:指定參數傳輸的位置,使用關鍵字參數,可以不考慮參數位置,多一個變量做中轉站: age=a, name=n, addr=addr
    • 收集參數: *args,**kwargs
def stu_key(name="No name", age=0, addr="No addr"):
    print("I am a student")
    print("我叫 {0}, 我今年 {1}歲了, 我住{2}".format(name, age, addr)) 
n = "jingjing"
a = 18
addr = "我家"
# 如果是普通參數,只按照位置傳遞,容易出錯
stu_key(age=a, name=n, addr=addr)

收集參數

  • 把沒有位置,不能和定義時的參數位置相對應的參數,放入一個特定的數據結構中
  • 語法

    def func(*args,**kwargs):
        func_body
        按照list使用方式訪問args得到傳入的參數
    
    調用:
    func(p1, p2, p3, .....)
  • 參數名args不是必須這么寫,但是推薦
  • 收集參數可以和其他參數共存
  • *args:表示可以使用任意參數,實際是一個tuple
  • **keyword:把關鍵字參數按字典格式存入收集參數,類型是dict
def stu( **kwargs):
    # 在函數體內對于kwargs的使用不用帶星號
    print("Hello 大家好,我先自我介紹一下:")
    print(type(kwargs))
    # 對于字典的訪問,python2 和python3有區別
    for k,v in kwargs.items():
        print(k, "---", v)    
stu(name="liuying",  age=19, addr="北京大通州區", lover="王曉靜", work="Teacher")
stu(name="周大神")

收集參數混合調用的順序問題

  • 收集參數,關鍵字參數,普通參數可以混合使用,但要注意參數位置,否則報錯
  • 使用規則就是,普通參數和關鍵字參數優先
  • 定義的時候一般找普通參數,關鍵字參數,收集參數tuple,收集參數dict
def stu(name, age, *args, hobby="沒有", **kwargs):
# 調用的不同格式
stu(name, age)
stu(name, age, hobby="游泳")
stu(name, age, "王曉靜", "劉石頭", hobby="游泳", hobby2="烹飪", hobby3="跟不同女生聊天")
#以下執行報錯
stu(name, age, "王曉靜", hobby="游泳", hobby2="烹飪", hobby3="跟不同女生聊天", "劉石頭")

收集參數的解包問題

  • 把參數放入list或者字典中,直接把list/dict中的值放入收集參數中
  • *args用一個*號,**kwargs用兩個*號
    def stu(*args):
    l = ["liuying", 19, 23, "wangxiaojing"]
    # 此時,args的表示形式是字典內一個list類型的元素,即 arg = (["liuying", 19, 23, "wangxiaojing"],)
    # 很顯然跟我們最初的想法違背
    # 此時的調用,我們就需要解包符號,即調用的時候前面加一個星號
    stu(*l)

傳值和傳地址的區別

  • 對于簡單的數值,采用傳值操作,即在函數內對參數的操作不影響外面的變量
  • 對于復雜變量,采用傳地址操作,此時函數內的參數和外部變量是同一份內容,
  • 任何地方對此內容的更改都影響另外的變量或參數的使用

函數文檔

  • 函數的文檔的作用是對當前函數提供使用相關的參考信息
  • 文檔的寫法:

    • 在函數內部開始的第一行使用三引號字符串定義符
    • 一般具有特定格式
  • 文檔查看
    • 使用help函數,形如 help(func)
    • 使用__doc__, 參看案例
      def stu(name, age):
      '''
      這是文檔的文字內容
      :param name: 表示學生的姓名
      :param age: 表示學生的年齡
      :return: 此函數沒有返回值
      '''
      pass
      print(help(stu))
      print("*" * 20)
      print(stu.__doc__)

      輸入結果如下:

Help on function stu in module __main__:

stu(name, age)
    這是文檔的文字內容
    :param name: 表示學生的姓名
    :param age: 表示學生的年齡
    :return: 此函數沒有返回值

None
********************

    這是文檔的文字內容
    :param name: 表示學生的姓名
    :param age: 表示學生的年齡
    :return: 此函數沒有返回值
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女