Python中的函数(一)

发布时间:2019-03-13 22:20:02编辑:auto阅读(2270)

    一 数学定义的函数与Python中的函数                                         

     

    数学函数的定义:一般在一个变化过程中,如果有两个变量,X,Y,并且对于x的每一个确定值,y都有唯一与之对应的值,那么我们把x称为自变量,y为因变量,y为x的函数。x的取值范围就是函数的定义域。   如 : y = x + 5

     

    python中函数的定义:函数是逻辑结构化和过程化的编程方法。

     

    为什么要有函数呢?

    • 代码可重用
    • 保持一致性
    • 可扩展性

    python中函数定义的方法:

    1 def test(x,y):
    2     res = x + y
    3     return res
    • def:定义函数的关键字
    • test:函数名
    • ():内可定义形参
    • res = x + y :代码块
    • return:返回值

    补充:编程中的函数和数学意义上的函数是截然不同的概念,编程中的函数为完成一定功能的逻辑,数学定义的函数是一个等式。

    二 函数,过程,返回值

     

    过程的定义:过程就是简单特殊没有返回值的函数

     1  def test1(x,y):
     2      res = x + y
     3      print(res)   
     4      
     5  def test2(x,y):
     6      res = x + y
     7      print(res)    
     8      return res
     9 
    10 print(test1(1,2))
    11 print(test2(1,2))

    总结:当一个函数没有用return时,python解析器会隐式的返回None,所以python中过程也是函数。

     1 def test1():
     2     pass
     3 
     4 def test2():
     5     return 1
     6 
     7 def test3():
     8     return 1,2,3,"abc"
     9 
    10 print(test1())
    11 print(test2())
    12 print(test3())

    终结:

    • 返回值数=0:返回None
    • 返回值数=1:返回object
    • 返回值数>1:返回tuple

    三 函数的参数

    形参和实参

    • 形参:形参变量只有在被调用时才被分配内存单元,在调用结束时,立即释放所分配的内存单元。因此,形参只在函数内部有效,函数调用结束返回主调函数后不能继续使用该形参。
    • 实参:实参可以是常量,变量,表达式,函数等,在进行函数调用时,它们必须要有却定的值(要有定义),以便把值传给形参。 
    1 def test(x,y):   #x,y为形参
    2     res = x + y
    3     return res
    4 
    5 a = 1
    6 b = 2
    7 c = test(a,b) #a,b为实参
    8 print(c)

    x,y为形参
    a,b为实参

     

    可变长参数

    1 def test(x,y={1:2},z=15,*args,**kwargs):
    2     print(x)
    3     print(y)
    4     print(z)
    5     print(args)
    6     print(kwargs)
    7 
    8 test(1,2,3,4,5,[6,5],*[5,6],**{"sdf":2,"abc":2})
    输出:
    print(x):1
    print(y):2
    print(z):3
    print(args):(4, 5, 6, 5, [5, 6])
    print(kwargs):{'sdf': 2, 'abc': 2}
    • x,y,z:单个参数名必须放前面
    • y,z:默认值参数必须放在没赋值参数后面
    • *args:必须放在以上参数后面,里面装的是传进来多的参数,然后组成元组
      • 参数不加*,默认将参数当成整体传入
      • 参数前加*,将参数遍历出来传入
    • **kwargs:必须放在以上参数后面,参数前面加入**,表示传入字典,将传入的元素组成字典

     函数的定义和参数的传入都必须遵循上面规则。

     

关键字