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

  • 相关阅读:
    什么是Redis?简述它的优缺点?
    2021年最新盘点数据库MySql笔试题
    网易CTO:70%.NET开发,遇到这个问题就怂!
    近200篇机器学习&深度学习资料分享【转载】
    【转】为什么0.1无法被二进制小数精确表示?
    【Leetcode-easy】Remove Element
    【Leetcode-easy】Remove Duplicates from Sorted Array
    【LeetCode-easy】Merge Two Sorted Lists
    【Leetcode-easy】Valid Parentheses
    【Leetcode-easy】Remove Nth Node From End of List
  • 原文地址:https://www.cnblogs.com/suim1218/p/10399325.html
Copyright © 2011-2022 走看看