python中的函数应用

1. 函数的定义:
[python]  view plain  copy
  1. def func_name(参数1,2...):  
  2.     "函数底下第一行写一个str会作为函数的文档DocStrings"  
  3.     print("hello world!")  
  4.   
  5. print("hello again!")  
  6. # 函数底下缩进一个TAB的都是函数的代码块  
 按照语法就定义了一个函数,函数名为 func_name。 调用时输入: func_name(需要输入的参数) 进行调用。

 使用: func_name.__doc__ 即可调用函数的DocStrings,一般用作为阐述函数的功能。

 2. 函数的参数传递:

 参数传递有两种方式:一是值传递,将参数复制一份副本(堆和栈中都复制)传入函数内,函数内部修改的数据

 实际上是复制的副本,原参数不会受到影响;
[python]  view plain  copy
  1. a = [1,2,3]  
  2. def foo(x):  
  3.     x[1] = 10  
  4. foo(a)  # 调用函数  
  5. print(a) >> [1,2,3] 仍为原值  
 
 另一种是 引用传递 , 将参数本身传入函数中进行数据操作,只适用于 list,dict等可变量。值得注意的是,要使用引用传递,

必须要在参数中把可变量的值写进去,如果只是传入一个变量,则还是值传递:

[python]  view plain  copy
  1. def foo(x):  
  2.     x.pop()  
  3.     return x  
  4. # 引用传递  
  5. print(foo([1,2,3])) >> [1,2]  
  6.   
  7. # 值传递  
  8. l = [1,2,3]  
  9. foo(l)  
  10. print(l) >> [1,2,3]  仍为原值  
3. 函数的几种参数

函数有 5 种参数,必选参数,默认参数,可变参数,关键字参数,命名关键字参数。

必选参数,就是普通的参数。
默认参数,调用时可省略,会有一个默认值。语法是加个 = x
[python]  view plain  copy
  1. def foo(a,b=2,c=3):  
  2.     pass  
  3. # b,c 是默认参数  
 可变参数,可传入任意个参数,自动组成一个 tuple。语法是 *参数,也可直接调用时 *list
[python]  view plain  copy
  1. def foo(*sdf):  
  2.     pass  
  3. foo(1,2,3,3,4,4,2,32#组成元组传入函数内  
  4.   
  5. l = [1,2,3,4]  
  6. foo(*l)  #将list每个值取出,组成元组。  
 关键字参数,**kw(固定语法) 可传入 任意个 等号键值对(a=2,键不需要引号) 的参数,组成一个字典传入函数,类似,
可以调用时 **dict 传入字典内所有内容。
[python]  view plain  copy
  1. def foo(**kw):  
  2.     pass  
  3. foo(name="sd",age=18)  
  4.   
  5. d = {"name":"dsf","age":20}  
  6. foo(**d)  
 命名关键字,foo(a,b,*,name,age) 用一个星号,星号后面的都是命名关键字参数。仍然可以输入任意的 等号键值对 ,

相当于从中筛选出 name, age 两个键值对,没什么用。同时定义时,星号后的可以写成默认参数。
[python]  view plain  copy
  1. def foo(a,b,*,name="pop",age=20):  
  2.     pass  
  3.   
  4. foo(a,b) # 默认值补上  
  5. foo(a,b,name="sdf",class="ed",age=30)  
  6. # class 被忽略  


5. 全局变量

在外部创建的变量为全局变量,作用域为全部。函数内部定义的变量为局部变量,作用域仅限于函数内。如果想在函数内

使用全局变量,直接使用,但是不能赋值,由于python的创建变量机制,解释器会认为是在函数内创建一个新的变量。

解决方法 global 变量名,声明使用的是全局变量。建议定义全局变量写 g_变量名。
[python]  view plain  copy
  1. a = 21  
  2. def foo():  
  3.     global a  
  4.     a = 30  
  5. print(a) >> 30  
6. 匿名函数

适用于简单的函数(只有一行表达式的函数),用完就删。
[python]  view plain  copy
  1. lambda x,y:x+y  
  2.   
  3. 冒号前为参数,冒号后为返回值  
  4. lambda是固定语法  

7. 高级函数

map: map(function, iterable)
将可迭代对象中的每一个元素都执行一次function

reduce: python3 整合进了 functools 模块,需要引入

  reduce(function, iterable)
 有个要求,函数是要能接受两个参数的函数。作用:将可迭代对象中的头两个元素执行函数,函数返回值和第三个元素
作为参数再执行函数,如此直到结束。

filter 过滤器,filter(function, iterable) 将函数作用于每个元素,根据返回值是True保留或者False去掉元素。返回一个生成器
 
sorted: 排序算法
  sorted(序列,key) 将元素按ASCII码排序,返回从小到大的列表。也可加入排序规则key, key = 函数,会将每个元素

作用一次函数,得到的返回值组成一个keys列表,再对keys列表排序,最后按相应的顺序对原序列排序。

猜你喜欢

转载自blog.csdn.net/qq_41655148/article/details/79269505