zoukankan      html  css  js  c++  java
  • ql的python学习之路-day7

    函数与函数式编程

    一.编程模式分为三种:

    1.面向对象编程:类----->关键字class

    2.面向过程编程:过程----->关键字def,没有return

    3.函数式编程:函数----->关键字def,有return返回值(注:函数式编程与我们学习的函数完全不是一回事)

    面向过程编程是没有返回值的函数式编程,在python中过程可以看做函数,只是python默认过程没有返回值。

    面向过程编程就是把一段段零散的代码通过def定义成一块块代码,需要调用的时候就拿出来使用。

    函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此任意一个函数,只要输入是确定的,输出就是确定的

    python对函数式编程提供部分支持,由于python允许使用变量,所以python不是纯粹的函数式编程语言。

     1 #!/user/bin/env python
     2 #-*-coding:utf-8 -*-
     3 #Author: qinjiaxi
     4 #函数
     5 def func1():
     6     """testing1"""
     7     print('in the func1')
     8     return 0
     9 #过程
    10 def func2():
    11     """testing2"""
    12     print('in the func2')
    13 x = func1()#调用函数
    14 y = func2()#调用过程
    15 print('func1 return: {}'.format(x))#函数有返回值返回定义函数时的0
    16 print('func2 return: {}'.format(y))#过程没有返回值返回None

    二.为什么要使用函数

    1.避免代码重复(避免代码的重复,把代码封装到函数中,调用时只调用函数)

    2.保持一致性(调用函数时)

    3.可扩展容易扩展(修改函数时,其他调用函数的地方都跟着变动)

     三.函数的返回值

    1.返回值个数=0,返回None

    2.返回值个数=1,返回object(本身)

    3.返回值个数>1,返回tuple(元组)

    四.函数为什么要有返回值

    返回整个函数的运行结果,根据返回结果进行后面的操作

    五.函数的参数

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 # Author:qinjiaxi
     4 
     5 #位置参数和关键字参数
     6 def test(x,y):
     7     print(x,y)
     8 test(1,2)#1,2是位置参数,按照位置来传递函数参数,与形参一一对应
     9 test(y = 1, x = 2)#此时y和x是关键字参数,将形参赋值与形参顺序无关
    10 "其中x,y是形参,1、2是实参"
    11 "位置参数和关键字参数共同使用的时候:必须位置参数放在前面,否则报错"
    12 
    13 #默认参数
    14 def test1(x, y =2):
    15     print(x,y)
    16 test1(1)
    17 "默认参数:在定义函数的时候给形参赋值" 
    18 "默认参数的特点:调用函数的时候,默认参数非必须传递,如果传递就修改之前的赋值" 
    19 "默认参数的用途:1.提前固定值,默认安装值 2.连接数据库时使用默认参数可以固定端口号" 
    20 
    21 #参数组(也叫收集参数)
    22 #传递多个参数
    23 def test2(*args):
    24     print(args)
    25 test2(1,2,3,4,5)#接受多个实参,将参数传进去得到一个元组
    26 test2(*[1,2,3,4,5])#    args = tuple([1,2,3,4,5])
    27 
    28 def test3(x, *args):
    29     print(x)
    30     print(args)
    31 test3(1,2,3,4,5)#将1传给1,其他的以元组的形式传递给args
    32 
    33 #传递多个字典参数
    34 def test4(**kwargs):
    35     print(kwargs)
    36 test4(name = 'qinlang', age = 3)#接收关键字参数变成字典
    37 test4(**{'name': 'qinlang', 'age': '3'})#kwargs = dict({'name':'qinlang', 'age':'3'})
    38 "功能:把N个关键字参数,转换为字典的方式"
    39 
    40 def test5(name,**kwargs):
    41     print(name)
    42     print(kwargs)
    43 test5('秦朗', x = 111 ,y =222, age = 8)#先接受位置参数,然后把关键字参数变成字典
    44 
    45 def test6(name, age = 3, **kwargs):
    46     print(name)
    47     print(age)
    48     print(kwargs)
    49 test6('秦朗',hobby = 'play',age = 3.5)#先接受位置参数,然后接受默认参数,最后将关键字参数变成字典
    50 
    51 "总结:*args接受的是位置参数,如果调用函数的时候不传递则返回一个空元组"
    52 "      *kwargs接受的是关键字参数,如果调用函数的时候不传递则返回一个空字典"
    53 "      默认参数在调用的时候可以写可以不写,如果写的话有两种方式一是在固定位置写值、二是以关键字参数传递"
    54 "      最后强调,位置参数一定得放在关键字参数的后面"

     

  • 相关阅读:
    牛客(4) 重建二叉树
    牛客(3)从尾到头打印链表
    牛客(2)字符串替换
    牛客(1)二分查找
    同义词+序列+视图+临时表
    用户+授权
    控制文件+日志文件
    oracle表的基本操作
    Linux(CentOS6.8)配置Redis
    Linux(CentOS6.8)配置ActiveMQ
  • 原文地址:https://www.cnblogs.com/qinlangsky/p/9459054.html
Copyright © 2011-2022 走看看