第10課 python 函數

今日有點晚,上午去hilston開會 廣東省科學院&白俄羅斯科學院所長會議。。。學習了一個上午,簡直收穫良多。。下午又多問題處理。。。。網站又聚餐。。只能回來加加班處理一下今日的內容了(不堅持,又被遺忘了),仍是要堅持一下學習Python,否則真是忘記忘記再忘記,以後就不搞了。。。
    今日咱們說函數:
    1. 函數 從小學-初中常常說的x = y+1 ,x,y都是有因果關係的,咱們叫函數。今日咱們在編程說的函數有區別的。他是一個代碼的報裝,固然也有因果關係。你執行/調用有相關的結果。例如:
    def abc():
         print("帥哥")

    ### def 是 define的縮寫,定義函數必須有的開頭;
    ### abc 是函數名字。。。方便調用。。。。其實能夠這裏理解 變量= xxxx ;同理 abc = 代碼;abc也是一個變量名字/函數名字。。。。
    ### print("帥哥")  是代碼---叫函數體(能夠有N行)
    ### () 用來幹啥的?有參數 你能夠放。。沒有你能夠不放。。。

    格式:
    def  函數名(參數):
        函數體

    就這樣的格式。。。。。。咱們說一下 參數。。。(可是不建議你們死機,只要知道位置參數就能夠了)

    def abc(a,b,c):
        print(a)
            print(b)
            print(c)

    ####這裏要說一下 調用  abc(1,2,3) 這樣個就是調用
    def abc(a,b,c)  ##a,b,c 叫位置參數
    abc(1,2,3,)       ##1,2,3 叫實參

    參數還分:位置參數,默認參數,不定長參數。。。是否是有點蒙?仍是記得一種就能夠了。。其餘跟進本身積累慢慢來就能夠了。
    不過咱們仍是要說一下:
    1. 默認參數:
    def abc(a,b,c=5)
        print(a)
            print(b)
            print(c)

    abc(1,3)  ##輸出 1,3,5  ###爲何不用3個實參,就能夠輸出5? 這就是默認參數的做用,注意:位置參數是固定的a,b 就是1,3 不可能 a=3,b=1 位置參數是死的。。

    2. 不定長參數.
 def abc(*args):
     print(args)

abc(1,3,4,5) ###輸出是 元組 tuple....如何抽取?

def abc(*args):
    #print(args)
    for i in args:
            print(i)

abc(1,3,4,5) ####看看區別,是否是一個個顯示的。。。

因此通常人,咱們不用*args,可是有時候迫於項目變化,預計到未知,仍是能夠這樣處理一下。。。

不長參數,還有一個就是 **kargs ;跟*args 有什麼區別,多一個*k

def abc(**kargs):
    print(kargs)

abc(a=1,b=2,c=3)  ###你會發現他是一個字典。。。因此若是不知道將來發展用多少個參數,可是又要爲他作準備,開了一下字典這種吧,跟默認參數是否是有點像。。。。這樣直接在函數體作 添加嗎。。。。

######################################################################################
函數中的 return 仍是要說一下。。。
有些函數是不會有 return ,由於它不會 對返回值有處理,有想法。這裏咱們要說明一下,你不添加(默認 return是 None),
通常函數體執行完畢,若是你有對返回值有進一步處理,你就會定義,後面編碼時候有關聯。是否是很抽象?
舉例:
def abc(a,b):
    if a>b:
            print("a>b")
        elif a<b:
            print("a<b")
        else:
            return 0

    a=abc(1,1)

    if a = 0:
       print("samly71很是帥")
    else:
       print("ugy")

        ---------------------是否是不少判斷?複習一下吧,可是咱們這裏只要看 else : return 0 ,而後 samly71很是帥....
        return 終止了函數的運行了,返回 0 到函數調用,a=0 了,而後你作一次判斷,我這裏例子很是簡單,往後你的項目用來就不簡單了。。。

        #######################################################################################
        局部做用域;
        所有做用域;

        def abc():
            a= xxxx
        ##########a就是局部 做用域,他是沒法被外部 print(a)的。。。。

        若是你是
        a=xxxx
        def abc():
           print(a)

        print(a)
        ##############a被print 2次。。。。

  有些前輩會告訴你,若是你在第1個狀況,還想被外部調用  golbal a=xxxx 也是能夠的,可是合理會有很對風險,通常我做爲新人,基本不用。。。仍是老實一點好。。。。

    #################################################
    函數嵌套:
    def a():
       print("帥氣")

 def b():
    Print("是的,很是好")
   a()編程

b() ##回車後。。。

    「是的,很是好」
    「帥氣」
    ---------------爲何是這個順序?
    1. 在b() 調用前,上面的都只是放在內存,沒有執行;
    2. 在b 調用了 a 這時候才執行a的內容,因此他在後面。。。。

    +++++++++++++++++++++++++++++++++++++++++++
    是否是內容多了一點,可是很是簡單,由於咱們用最簡單的例子,來搞掂你的疑惑,內容不用多,也不用難。
    關鍵仍是知道這函數什麼,而後

    函數就是用來 精簡你的 代碼的,重複的內容,就嘗試去定義 函數吧。。。。例如
    print("samly71帥氣「) ##打印1000次。。。。你牛逼了
    print
    print
    print
    ----------------1000次,回頭第1個炒你。。。

    也許你想到
    for i in range(1,1001):
        print("samly71帥氣「)
    -----------------確實有進步,可是若是 5000次呢?還有若是是你呢?

    number = input("打印的次數: ")
    content = input("輸出的內容: ")

    def print_content(number,content):
        number = int(number)  
               ##py2 python3 對input的類型是不同的。。
                   for i in range(1,number+1):
                         print(content)

    print(number,content)
    -----------------是否是,以爲比以前好多了?是的,需求對新人來講應該不斷去消化,對本身提要求。。。
              
相關文章
相關標籤/搜索