<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

        函數

        計算機中的函數和數學中的函數不是一回事,而是一個subroutine 、子程序、procedures、過程。

        作用:

        1、減少重復代碼;

        2、方便修改,更易擴展;

        3、保持代碼的一致性。

      最簡單的一個函數程序:

        def f():                                       #函數名的命名規則與變量的命名規則相同

          print("ok")        

        f()                                              #調用的時候一定要記得加括號,因為定義一個函數的時候,如果不加括號

                      那它只是一個變量

        def add(a,b)                              #這里的a,b就是形參,下面的7和5是實參,都是一一對應的

          print(a+b)                              在函數沒有被調用的時候,它只是被print到了內存里 >>>>>>12

        add(7,5) 

       

        如何實現動態效果呢?

        def f(index):

          print("function %s"% index)

        f(5)                                       >>>>>>function 5    #這就實現了動態輸入,index是幾就輸入幾

        這里要強調一下格式化輸出:

        f.write("%s end action %s \n"%(time_current,n))

      簡單的函數代碼,避免重復代碼的:

       

      def action1 (n):
          print("starting action1...")
          with open ("日志記錄","a") as f:
              f.write("end action %s \n"% n)
      
      def action2 (n):
          print("starting action2...")
          with open ("日志記錄","a") as f:
              f.write("end action %s \n"% n)
      def action3 (n):
          print("starting action3...")
          with open ("日志記錄","a") as f:
              f.write("end action %s \n"% n)
      action1(1)
      action2(2)
      action3(3)

       

      這個代碼就顯得用點啰嗦,因為每一個函數里面都包含

      with open ("日志記錄","a") as f:
              f.write("end action %s \n"% n)這樣的重復代碼,這時就可以將重復的代碼寫成函數。
      
      
      import time
      def function(n):
          time_format="%Y-%m-%d %X"    #格式化輸出
          time_current=time.strftime(time_format)    #輸出當前的時間
          with open ("日志記錄","a") as f:
              f.write("%s end action %s \n"% (time_current,n))
      
      def action1 (n):
          print("starting action1...")
          function(n)
      
      def action2 (n):
          print("starting action2...")
          function(n)
      def action3 (n):
          print("starting action3...")
          function(n)
      action1(1)
      action2(2)
      action3(3)
      
      

       

       

      效果是一樣的,都是新建一個日志記錄的文檔,在里面輸入

      函數的相關參數:

        def print_info(name,age):

          print ("Name:%s"% name)

          print("Age:%s"% age)                                        >>>>>>name:menheng

        print_info("mengheng",25)                                                       age:25               #必須參數

        print_info(name="mengheng",age="25")                                                          #關鍵字參數

      不定長參數:

        高大上的加法器:

      def add(*args):             #參數前面加個*表示不定長參數,用來存無命名的參數
          print(args)               
          Sum=0
          for i in args:
              Sum+=i
          print(Sum)
      add(1,2,3,4,5)

       

       

      請注意一般正常輸入的不定長參數*arg都是以元組的形式輸出,而如果在輸入一個列表為[1,2,3]

      輸出的只能是([1,2,3],)為元組的一個元素,如果非要輸出(1,2,3),則要在后面引用的f(*[1,2,3])

      在括號里面加入*,同理**kwargs則是以字典的形式輸出在下面的有命名參數中f(**{"name":"mengheng"})

      這樣就是傳了字典過去。

       

      def print_info(*args,**kwargs):
          print(args)
          print(kwargs)
      print_info(*["alex","18","male"],job="IT",hobby="girls",height="188")  #分為有命名的和沒有命名的

       

       

       

      >>>>>>('alex', '18', 'male')
                  {'job': 'IT', 'hobby': 'girls', 'height': '188'}

        關于不定長的位置:*args放在左邊,**kwargs參數放在右邊。

        所以函數參數的優先級就是從左到右

        def func (name,age=22,*args,**kwargs)             #從左到右就是關鍵字參數,默認參數,不定長參數

      函數的返回值:

        def f():

          print("ok")

          return 10  

        a=f()

        print(a)           

      >>>>>>ok

                    10                               #返回值的作用:1、結束函數  2、返回某個對象

        注意點:1、如果函數沒有返回值,那它的返回值就是none

            2、如果return多個對象,那么python會幫我們把多個對象封裝成一個元組返回。

      函數的作用域:

        python使用的LEGB的順序來查一個符號對應的對象

        locals-->enclosing-->globals-->builtins            

        對應的是:局部變量--》閉包空間--》全局變量--》內建模塊

            低級----》高級                低級只能看和輸出,但是并不能改變高級變量

      count=10                            #定義了一個全局變量
      def outer():
          global count                    #在改全局變量的時候必須要聲明一下
          print(count)
          count=5
          print(count)
      outer()

       

       找變量的時候必須是從里到外找(只能看和輸出,不能改),不能從外向里找,如果要改就要聲明一下。

      def outer():
          count = 10
          def inner():
              nonlocal count
              print(count)
              count=5
              print(count)
          inner()
          print(count)
      outer()
      >>>>>>10
          5
          5
       
      Posted on 2018-02-27 11:26  小蘿卜頭12138  閱讀(318)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 欧洲无码一区二区三区在线观看 | 午夜通通国产精品福利| 99久久婷婷国产综合精品青草漫画| 午夜在线欧美蜜桃| 亚洲精品揄拍自拍首页一| 激情综合网五月婷婷| 国产网友愉拍精品视频| 国产无遮挡猛进猛出免费软件| 日韩乱码卡一卡2卡三卡四| 国产亚洲精品自在久久vr| 成人综合婷婷国产精品久久蜜臀| 岛国最新亚洲伦理成人| 久久亚洲精品无码va白人极品| 成人综合婷婷国产精品久久蜜臀| 免费av深夜在线观看| 精品少妇人妻av无码久久 | 福利一区二区在线播放| 美女高潮黄又色高清视频免费 | 蜜桃麻豆www久久囤产精品| 国产午夜福利不卡在线观看| 鲁丝片一区二区三区免费| 国产午夜三级一区二区三| 亚洲人成电影在线播放| 久久婷婷成人综合色| 亚洲熟妇少妇任你躁在线观看无码| 日本九州不卡久久精品一区| 中文字幕午夜福利片午夜福利片97| 亚洲欧洲∨国产一区二区三区| 亚洲精品综合一区二区三区| 大冶市| 久热这里只有精品蜜臀av| 高潮潮喷奶水飞溅视频无码| 亚洲精品中文av在线| 亚洲一区二区三区水蜜桃| 91亚洲国产三上悠亚在线播放| 国产在线观看免费观看| 少妇高潮灌满白浆毛片免费看| av偷拍亚洲一区二区三区| 97久久精品人人做人人爽| 国产成人黄色自拍小视频| 亂倫近親相姦中文字幕|