2018-07-24Python(6)

python基础语法(6)

函数

  1. 定义一个函数

    代码示例:

    def add(n,m):
        sum = n + m
        print(sum)
    
    • 函数的代码块必须以def关键字开头,后接函数名称和()。
    • 函数没有大括号,使用:和缩紧来完成内容的层次化
    • 增加适当的注释
    • 函数一定会后return,不写的话默认返回None

    func = add() #将add()函数的返回值给func

    func02 = add #将函数所在的地址给了一个变量

  2. 可变(mutable)与不可变(immutable)对象

    不可变对象有:

    num string tuples

    可变的对象有:

    list duct set

    • 可变对象:

    对象中的值可以直接修改,修改的是对象指向的内存中存的值。
    * 不可变对象:
    > 对象指向的内存中存的值不可改变,当改变此对象时,会重新指向一个新地址,之前的内存会被垃圾回收系统回收。

  3. 参数类型

    1. 必备参数
      代码示例:

       def add(m,n):
           sum = m + n
           print(sum)  
      

      说明:

      上述代码中,m,n即为add函数的必备参数,也是它的形参,调用该方法时,传入的实参数量要与形参相符。
      2. 默认参数
      代码示例:

       def add(m,n = 0):
           sum = m + n
           print(sum)   
      

      说明:

      上述代码中,0即为n的默认参数,此时传入的形参若是没有n,则n取默认值,否则取传入的值。
      3. 不定长参数
      代码示例:

       def add(m,n,*a):
           sum = m + n
           for i in a:
               sum = sum + i
           print(sum)   
      

      说明:

      上诉代码,可以传入大于等于2的任意实参。
      *a代表除了前两个实参剩下的实参。
      4. 关键字参数

      关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。

      代码示例:

       def person(name, age, **kw):
       print('name:', name, 'age:', age, 'other:', kw)  
      

      函数person除了必选参数name和age外,还接受关键字参数kw。在调用该函数时,可以只传入必选参数:

       >>> person('Michael', 30)
       name: Michael age: 30 other: {} 
      

      也可以传入任意个数的关键字参数:

       >>> person('Bob', 35, city='Beijing') 
       name: Bob age: 35 other: {'city': 'Beijing'} 
       >>> person('Adam', 45, gender='M', job='Engineer') 
       name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}  
      

      关键字可以用来扩展函数功能。你可以再保证接受到必备参数的前提下接受调用者提供的更多参数。
      和可变参数类似,可以先组装出一个dict,然后把该dict转化为关键字参数传进去:

       >>> extra = {'city': 'Beijing', 'job': 'Engineer'}
       >>> person('Jack', 24, city=extra['city'], job=extra['job']) 
       name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}  
      

      可以简写为:

       >>> extra = {'city': 'Beijing', 'job': 'Engineer'} 
       >>> person('Jack', 24, **extra) 
       name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}  
      

      kw(关键字参数)获得的是extra的拷贝,对kw的改动不会影响到函数外的extra。

    2. 命名关键字参数
      指定了关键字参数的名字,只会接受对应的关键字参数。
      代码示例:

       def person(name, age, *, city, job):
       print(name, age, city, job)  
      

      以* 为分隔符,*后为命名关键字函数。
      命名关键字参数必须传入对应的关键字参数的参数名。如果没有传入,会报错。

    python中没有重载,所以不存在重名函数,最后一个函数会把之前的函数覆盖掉。

  4. lambda函数

    代码示例:

     a = lambda x : x**2
     print(a(2))  
    

    输出结果:

    lambda函数中,:前的为参数,后面的为函数体。
    lambda函数会返回函数的地址,而不是函数处理之后的值。
    lambda被称为单行函数,:后面的语句不能换行。

5.map()

map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。

代码示例:

def mi(i):
    i = i***3
return i 
list = [1,2,3,4,5,6,7,8,9]
new = map(mi,list)
print(new)  

你可能感兴趣的:(2018-07-24Python(6))