zoukankan      html  css  js  c++  java
  • 9. Python函数

    函数

    函数能提高应用的模块性,和代码的重复利用率。定义一个函数比较简单,但是需要遵循以下几点规则:

    1. 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
    2. 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
    3. 函数内容以冒号起始,并且缩进。
    4. return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

    定义函数格式

    def 函数名(参数):
        函数体
    
    

    参数主要有以下4种类型:必需参数、关键字参数、默认参数、不定长参数

    必传参数

    必传参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。如果我们定义一个加法函数,需要我们传入2个参数,如果我们只传入一个参数,就会出现语法错误如下代码所示:

    def add(a, b):
        return a + b
    
    print(add(1))
    
    

    上面代码将输出如下内容:

    Traceback (most recent call last):
    File "F:/blogApiTest/test4.py", line 4, in
    print(add(1))
    TypeError: add() missing 1 required positional argument: 'b'

    关键字参数

    函数调用使用关键字参数来确定传入的参数值。使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。如下代码所示:

    def person(name, age):
        print("名字: ", name)
        print("年龄: ", age)
    
    # person
    person(age=50, name="testDog")
    
    

    我们必传参数的顺序是name、age,如果我们想要使用关键字参数,我们在调用person函数的时候,通过参数名赋值,改变参数传入顺序。

    默认参数

    调用函数时,如果没有传递参数,则会使用默认参数。以下实例中如果没有传入 age 参数,则使用默认值,如下代码所示:

    def person(name, age=35):
        print("名字: ", name)
        print("年龄: ", age)
    
    
    # person
    person(age=50, name="testDog")
    print("------------------------")
    person(name="testDog")
    
    

    上面代码将输出如下内容:

    名字: testDog
    年龄: 50
    名字: testDog
    年龄: 35

    可变参数

    加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。
    可变参数格式

    def 函数名(*参数):
        函数体
    
    

    我们现在有一个需求,定义一个加法函数,这个加法函数可以接收任意个参数然后进行相加,那么如何去实现呢?这里就要用到可变参数。如下代码所示:

    def add(*numbers):
        sum = 0
        for n in numbers:
            if type(n) == int or type(n) == float:
                sum = sum + n
            else:
                n = 0
                sum = sum + n
        return sum
    
    
    print(add(1, 2, 'a'))
    
    

    上面代码将输出如下内容:

    3

    上面代码比较简单,定义一个加法函数,参数类型是可变参数类型,我们已经知道可变参数格式是元组形式,所以我们读取元组中每一个数据进行相加,如果元组中数据不是数字,我们把数据替换为0。

    欢迎关注微信公众号:软件测试汪。软件测试交流群:809111560

  • 相关阅读:
    打包spring项目遇到的坑 Unable to locate Spring NamespaceHandler for XML schema ……shcema/context 产生的原因及解决方法
    Mybatis 从入门到精通一:mybatis的入门
    IO流系列一:输入输出流的转换
    本地模拟 gitlab ci 的 demo 项目
    docker 容器中部署 Go 服务时,请求 https 文件时抛错
    微信支付『支付失败,如果已扣款,资金在0-3个工作日原路返回』踩坑案例及解决方案
    PHP 安装 扩展时 抛出 /usr/local/Cellar/php@7.1/7.1.25/pecl 异常解决
    SpringBoot2 引入 Aop
    Mac 下 IDEA 中 SpringBoot 如何利用 DevTool 开启热部署
    MySql数据库中敏感字段加密处理方案
  • 原文地址:https://www.cnblogs.com/suim1218/p/10399325.html
Copyright © 2011-2022 走看看