zoukankan      html  css  js  c++  java
  • 函数与函数式编程

    函数与函数式编程:
     
     二种编程模式或是编程方法:
     
     1. 面向对象;=>> 类 =>> 定义class
     2. 面向过程;=>> 过程 =》def
     3. 函数式编程;最早式编程方法;=>> 函数 =>> def
     
     编程语言中函数的定义:函数是逻辑结构化和国产化的一种编程方法;
     
     def test(x):
      "The function definitions"
      x += 1
      return x
     
     def:  #定义函数的关键字
     test:  #函数名:
     ():   #内可以定义参数
     "":   #文档描述
     x += 1:  #泛指代码块或程序处理过程
     return:  #定义返回值
     
     
     # 定义函数
     def func1():
      """testing"""
      print("in the func1")
      return 0
     
     # 定义过程
     def func2():
      """testing"""
      print("in the func2")
     
     x = func1()
     y = func2()
     print(x)
     print(y)
     
     输出:
     in the func1
     in the func2
     0
     None    #python中隐式的给过程定义了返回值。
     
     
     过程:就是没有返回值的函数;
     
     在函数中没有定义返回值的时候,会返回一个None!
     
     函数的优点:
     1. 代码的重复利用,减少重复代码:
     2. 保持一致性;
     3. 可扩展性
     
     
     def test():
      print("in testing ")
      return 0      #执行了return就代表函数结束了,后面的代码将不被执行
      print("end in testing")
     
     test() 
     
     输出:
     in testing
     
     
     def test():
      print("in testing ")
      return 0,"ss",(1,2),[1,2,3]   #将返回值打包成一个元组。
      
     a=test()
     print(a)
     
     输出:
     in testing
     (0, 'ss', (1, 2), [1, 2, 3])
     
     
     
     def test():
      print("in testing ")
      return 0,"ss",(1,2),[1,2,3]
     
     def test1():
      print("in testing 1")
      return test
     
     print(test1)
     
     输出:
     <function test1 at 0x0350BA08>    #此时返回的式test的内存地址,这个对装饰器很有作用,就是所谓的高阶函数;
     
     带参数的函数: 
     def test(x,y):    #x, y 是形参
      print(x)
      print(y)
     
     test(1,2)     #1,2 是实参,实际存在;
     
     
     
      A. 位置参数:
      实参和实参是一一对应的,位置也是一一对应;
     def test(x,y):
      print(x)
      print(y)
     
     test(1,2)    #按位置对应
     
     B. 关键字参数
     def test(x,y):
      print(x)
      print(y)
     
     test(y=1,x=2)      #关键字对应。与形参位置没关系;
     
     如果同时存在关键参数和位置参数,关键参数是不能放在位置参数前面
     也就是说从左往右,位置参数前面不能有关键参数。
     
     如果存在关键字参数就不论位置了。
     
     
     C. 默认参数:
     def test(x,y=1):   #即在形参中对对参设置默认值
      print(x)
      print(y)
     
     test(1,y=2)
     
     默认参数的特点,调用函数时,默认参数非必须传值
     用途:默认安装值,
     
     D. 参数组:
     针对实参不固定的情况,如何定义形参,即参数组的概念:
     
     def test(*args):   # *代表一个功能代号,表示实参不固定, args只是一个名字,可以随便,但规范是args:
      print(args)
     
     test(1,2,3,4,5)
     test(*[1,2,3,4])   # *代表一个功能代号,表示实参不固定
     
     输出:
     (1, 2, 3, 4, 5)
     (1, 2, 3, 4)
     
     def test(x, *args):
      print(x)
      print(args)
     test(1, 2, 3, 4, 5)
     test(*[1,2,3,4])
     
     输出:
     1
     (2, 3, 4, 5)       # 返回元组
     1
     (2, 3, 4)
     
     
     接收字典形参:
     def test2(**kwargs):   # **代表不固定形参为字典
      print(kwargs)
      
     test2(name='alex',age='9',gender="female")
     test2(**{name='alex',age='9',gender="female"})
     
     输出:
     {'name': 'alex', 'age': '9', 'gender': 'female'}  # 返回字典
     
     将n个关键字参数转化为字典的方式。
     
     
     def test2(**kwargs):
      print(kwargs["name"])
      print(kwargs["age"])
      print(kwargs["gender"])
     test2(name='alex', age='9', gender="female")
     
     输出:
      alex
      9
      female
     
     
     def test2(x, **kwargs):
      print(x)
      print(kwargs)
     
     test2(1, name='alex', age='9', gender="female")
     
     输出:
     1
     {'name': 'alex', 'age': '9', 'gender': 'female'}
     
     
     def test2(x, age=18, **kwargs):   #参数组必须放在位置参数,关键字参数后面
      print(x)
      print(age)       #关键字需要独立出来,作为一个独立的参数
      print(kwargs)
     
     test2(1, name='alex', age='9', gender="female")
     
     输出:
     1
     9
     {'name': 'alex', 'gender': 'female'}
     
     
     *args    接收的是N个位置参数转换为元组的方式
     **kwargs  接收的是N个关键字参数转化为字典的方式
     
     
    ===========================================================
  • 相关阅读:
    顺序 | order (Flexible Box Layout)
    顶部边距 | margin-top (Basic Box Model)
    面具重复 | mask-repeat (Masking)
    面具类型 | mask-type (Masking)
    面具模型 | mask-mode (Masking)
    面具大小 | mask-size (Masking)
    面具图像 | mask-image (Masking)
    mycat 只分库,不分表,并且主从读写分离范例
    《风控模型—WOE与IV指标的深入理解应用》
    《风控模型—群体稳定性指标(PSI)深入理解应用》
  • 原文地址:https://www.cnblogs.com/brace2011/p/9191610.html
Copyright © 2011-2022 走看看