python,函数各种基础知识

一,定义函数的语法

1,定义
def 函数名():
    要封装的代码
    .......

def 是英文define的缩写

函数的命名规则:

由字母,数字,下划线组成

不能以数字开头

不能与关键字重名

最好要做到见名之意

 

二,函数的参数

参数分为形参和实参

形参-- 定义函数时,括号中的参数,用来接受外部参数使用的,在函数内部作为变量使用

eg:

def get_money(cardnum, passwd):  # 其中cardnum,和passwd都为形参, pass为占位符
    pass

三;细分形参又可以分为位置传参,不定长传参,默认传参

1,位置传参:

自己定义的,必须放在首位(在不定长传参,默认传参的前面,为必传参数)

eg:

def get_money(cardnum, passwd, money):
    if len(cardnum) < 10:
        print("卡号错误")
    if len(passwd) != 6:
        print("密码错误")
    if int(money) % 100 != 0:
        print("金额不为100的整数倍")
    return print("取款成功")


# 调用,因为卡号,密码,和金额都是位置传参,所以为必传,而且位置得一一对一应
get_money("1234567890", "123456", "100") 

 

2,不定长传参-- *args , **kwargs

*args-- 调用时可传多个参数,是以元组的形式存储的

**kwargs-- 调用时传多个参数,是以键值对的形式传参

eg:

def get_money(cardnum, *args, **kwargs):
    if len(cardnum) < 10:
        print("卡号错误")
    print(args)
    print(kwargs)


get_money("11111111111", True, "666", "888", name="菜鸟", age="18")

输出结果如下

3,默认传参,在定义函数的时候,可以默认给一个值,即形参=实参,如果在调用函数的时候,没有传对应的参数,就使用在定义的时候给的值

eg:

def get_money(cardnum, pwd="88888888", money="200"):
    
    '''
    :param cardnum:
    :param pwd: 给了一个默认参数为88888888
    :param money: 给了一个默认取款金额200
    :return:
    '''
    if len(cardnum) < 10:
        print("卡号错误")
    return print("取款成功,金额:{}".format(money))


get_money("11111111111aa")

输出结果如下图;

可见,调用时没有传取款金额的参数,默认用了定义函数时给的默认值

 

总结:三种参数可以并存,并存的时候的编写顺序为:位置参数,不定长参数,默认参数!!! 位置不对ide会报错提示

 

4,实参-- 调用函数时,括号中的参数,用来把外部的数据传递到函数内部

eg:

def get_money(cardnum, pwd="88888888", money="200"):

    if len(cardnum) < 10:
        print("卡号错误")
    return print("取款成功,金额:{}".format(money))


get_money("11111111111aa")  # 调用函数时,在括号中传进去的就是实参

5,函数传参的小方法-- 拆包

1,* 传递参数时,可以对元组/列表进行拆包

eg:

num_list = [10, 20, 30, 40]


def add(a, b, c, d):
    sum_num = a + b + c + d
    print(sum_num)

# 调用的时候,要把num_list 中的参数传进去,则可以利用拆包,但是切记,元组或列表中的元素个数,必须要和函数中定义的个数一致,才能拆包


add(*num_list)

2, ** 传递参数时,可以对字典进行拆包

eg:

def print_info(**kwargs):  # 因为这里在定义函数的形参时,定义的就是字典类型的不定长传参,所以调用时的个数无关紧要
    for key, value in kwargs.items():
        print(key, value)


persion_info = {
    "name": "菜鸟",
    "age": 18,
    "weight": 60
}

print_info(**persion_info)

拆包的用法:在接口自动化和web自动化的框架中会经常使用~切记。 

 

三:函数的返回return

注意事项:

1,假如在定义函数时,没有写return,则默认调用后的返回值为None

2,格式--      return 值 ,其中,值可以为任意类型的数据,看实际情况选择

3,return 后也可不跟值,表示返回为None

4, 在调用函数时,遇到return,则结束函数调用,跟break的效果是一样的

 

四,全局变量和局部变量的定义

 

局部变量--  在函数内部定义的变量,只能在函数内部可用

全局变量-- 在函数外部定义的变量,函数内部可以使用,但不可修改。如果非要修改,则要用global进行申明为全局变量

不太重要,但是要理解。

 

后续踩坑补充

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页