zoukankan      html  css  js  c++  java
  • [从零开始学Python]3.函数

    3.函数

    ​ 函数的本质就是功能的封装,和对代码的抽象

    1.函数的作用

    1.避免开发重复性的代码

    2.便于程序的理解与维护

    3.对底层代码的抽象

    2.函数的格式

    def 函数名(参数):

    ​ 函数功能代码…

    ​ 函数功能代码…

    ​ return (若没有返回值NULL)

    Python函数并不需要声明类型,调用的方法:函数名(参数,参数…)

    声明函数时的参数->形参,使用函数时的参数->实参

    返回值

    3.内置函数

    我们例举了一些内置函数,更多的内置函数我们可以在官方文档中查看,也可以自己找一些教程

    # 内置函数
    print(abs(-20))
    # 查看帮助文档
    help(abs)
    list1  = [2,4,-6,-7,9,-10]
    print(max(list1))
    print(max(2,4,-6,-7,9,-10))
    # 数据类型转换
    print(type(int('123')))
    print(type(str(123)))
    print(type(float("123")))

    4.自定义函数

    自定义函数的导入实例:

    例如:

    # 从其他位置导入函数
    from MyTest import my_abs
    print(my_abs(-999))
    # help查看函数说明文档
    help(my_abs)

    MyTest.py

    # 自定义 abs函数
    def my_abs(x):
        '''
        自定义abs函数
        :param : 一个自然数
        :return: 这个自然数的绝对值
        '''
        if x>=0:
            return x
        else:
            return -x

    自定义的函数不但可以外置,还可以自己去书写函数的说明,上述调用的输出情况如下:

    999
    Help on function my_abs in module MyTest:
    
    my_abs(x)
        自定义abs函数
        :param : 一个自然数
        :return: 这个自然数的绝对值

    我们还可以通过这种方式找到这个函数的说明文档

    my_abs.__doc__

    为了方便让别人得到更友好的使用体验,我们可以把报错设置的更加人性化

    # 自定义 abs函数
    def my_abs(x):
        '''
        自定义abs函数
        :param : 一个自然数
        :return: 这个自然数的绝对值
        '''
        if not isinstance(x,int,float):
            raise TypeError('只能输入int或float类型参数')
        if x>=0:
            return x
        else:
            return -x

    这个isinstance()函数,是判断函数类型的函数,如果x是int或者float则返回真。注意not

    5.多个返回值的函数

    在python当中,多个返回值的函数也是很常见的

    def getNames():
        return 'lsw','qq1'

    那么我们如何去接受这种多返回值的函数呢,1.可以用多个变量去接收,2.可以用一个变量去接收

    name1,name2 = getNames()
    print(name1,name2)
    
    t = getNames()
    print(t)
    print(type(t))

    可以发现,如果用多个变量去接收,那就可以直接得到值,如果用一个变量接收多个返回值的函数,那么得到的就是一个元组

    >>>lsw qq1
    >>>('lsw', 'qq1')
    >>><class 'tuple'>

    6.默认参数

    假设我们有一个已经使用了很久的函数power()
    我们期待给他一个拓展的功能,可以实现计算x的n次方
    如何拓展使得在不影响旧函数使用的情况下新添这个功能呢

    def power(x):
        return x*x
    
    def power(x,n=2):
        s = x
        while n>1:
            s = s*x
            n = n-1
        return s
    
    print(power(2,3))
    print(power(4))

    7.多个参数的函数

    def getSum(numbers):
        sum = 0
        for i in numbers:
            sum+=i
        return sum
    
    print(getSum([1,2,3,4,5]))

    这种情况下我们给出的参数得是列表形式的,如何使参数的给出可以更加随意呢

    def getSum(*numbers):
        sum = 0
        for i in numbers:
            sum+=i
        return sum
    
    print(getSum(2,4,6,8))
    nums = [2,3,4]
    # 通过列表传入
    print(getSum(*nums))

    8.函数的关键字

    有已知的参数,还有提供可以拓展的参数

    def student(name,sex,**kw):
        print('name:',name,'sex:',sex,'others:',kw)
    
    student('lsw','male',age=24,region='china')
    # 通过字典传入
    dicts = {'age':24,'region':'china'}
    student('lsw','male',**dicts)
    # 在之后的可选关键字中,只接收指定关键字
    def student(name,sex,*,city):
        pass

    综上,对于关键字接收,已经有了这么几种方法

    def f1(a,b,c=0,*args,**kw):
        '''
        a,b为必选参数,c为默认值参数,args为任意个参数,而kw为键值对型的参数
        '''
        pass
    def f2(a,b,c=0,*,d,**kw):
        '''
        像这种*,d即多个非键值对型参数中,除了给出的必选参数和默认值参数,只接收d属性这个参数,但kw对应的是键值对型参数,对于给出的键值对型参数还是可以接收
        '''
        pass

    9.全局变量

    在python中,也是区分全局变量和局部变量的,在函数中可以使用或者修改全局变量,但前提是需要声明一下这个变量是全局的,(global),以使解释器知道,这是一个全局变量而非local variable局部变量

    而局部变量,只能在声明它的代码块中访问或者修改,例如下面的age 就是定义在函数fun()中的局部变量,若在函数外访问,会提是这个变量是未定义的。

    # 全局变量与局部变量
    name = 'zhangsan' # 全局变量
    def fun():
        # global name
        print('函数内部输出全局变量:',name)
        name = 'lisi'
        print('name=',name)
        age = 30 # 局部变量
        print('age=',age)
    
    fun()
    print('函数外name:',name)
  • 相关阅读:
    npm --save-dev 与 --save 的区别
    Vue 简单实例 购物车2
    Vue 简单实例 购物车1
    node.js富文本编辑器
    使用jquery操作session
    浏览器窗口之间传递数据
    批量修改文件编码格式
    具有动态效果的响应式设计
    Ajax请求全局配置
    html实体转换
  • 原文地址:https://www.cnblogs.com/hzshisan/p/12571091.html
Copyright © 2011-2022 走看看