python_30期【函数def 函数名():】

#!/user/bin/python3
#  -*- coding: utf-8 -*-
# @Time      : 2020/6/5 11:40
# @Author    :Test_zhangping
# @Email     :981874735@qq.com
# @File      :class_python函数.py
# 三步函数法
# 1.先用零散的代码写出功能要求
# 2.变成def 函数名()
# 3.想办法提高他的复用性 参数化
# 函数的定义!!
# 基本语法

# def get_money():   #冒号之后,是功能的实现代码。
#     print("取了500万!!")
#     print("我笑醒了!")
#     print("不用上班了!")
# 调用 函数名称()
# get_money() # 不知道如何实现的,但是我只是使用了它

# ()准备几个坑,相当于告诉调用者,必须把坑填满,否则功能使用不了。
# 定义时,()放的形参,并不是具体的数据。形参用变量表达。形参用来接收 - 调用者实际传进来的数据。
# 形参个数由什么来决定? 需求。功能实现需要几个用户数据。
def get_money_V2(cardNum,passwd,count):
    """
    函数功能说明
    :param cardNum: 卡号
    :param passwd: 密码
    :param count: 取款金额
    :return:
    """
    # 卡号必须大于10位。
    if len(cardNum) < 10:
        print("卡号错了,再见!")
    # 密码必须为6位。否则不玩了。
    if len(passwd) != 6:
        print("密码长度出错,再见!")
    # 金额必须为100的整数倍。不然提示你金额出错。
    if int(count) % 100 != 0:
        print("金额不为100的整数倍!")
    # pass   # 我还没有想好写什么代码。不写呢,又要报错。使用pass占位。
# 调用
# 1、所有参数必须得传
# 2、位置传参。对应的位置传对应的值。
# 调用的时候,传的是具体的数据。叫做实参。
# get_money_V2("12345678900","4567","500")
get_money_V2("12345678900",4567,"500") # TypeError: object of type 'int' has no len()
# print() # ctrl+B 看源码。

# 默认参数:如果你没有传对应的实参。我就默认我在定义时提供的值。
# 定义时,形参=值
# 默认参数在最后。
# 不限定个数。
def get_money_V3(cardNum,passwd="123456",count=1000):
    # 卡号必须大于10位。
    if len(cardNum) < 10:
        print("卡号错了,再见!")
    # 密码必须为6位。否则不玩了。
    if len(passwd) != 6:
        print("密码长度出错,再见!")
    # 金额必须为100的整数倍。不然提示你金额出错。
    elif int(count) % 100 != 0:
        print("金额不为100的整数倍!")
    else:
        print(count)
# get_money_V3("123456789",)  # 使用默认值。
# get_money_V3("12345678900","123000")  # 部分使用默认值。
# # 调用时,关键字参数. 传参时,形参=实参。
# get_money_V3("12345678900",count=2000)
def get_money_V4(cardNum,*args,**kwargs):
    # args是元组。()
    # kwargs是字典。{key:value}
    # 卡号必须大于10位。
    if len(cardNum) < 10:
        print("卡号错了,再见!")
    print(args)
    print(kwargs)
    for item in args:
        print(item)

# get_money_V4("12345678900")
# get_money_V4("12345678900",True,"123456",100)
# res = get_money_V4("12345678900",True,"123456",name="小简",city="长沙")
# get_money_V4("12345678900",True,"123456",name="小简",city="长沙")

# 位置参数(必传No1),默认参数(可传可不传)、不定长参数(支持传多个)
# 顺序(参考print):不定长参数   默认参数(可传可不传)
# *args,**kwargs

# 返回值。 礼尚往来。
# s = print(res)
# print(s)

def get_money_V5(cardNum,passwd="123456",count=1000):
    # 卡号必须大于10位。
    if len(cardNum) < 10:
        print("卡号错了,再见!")
        return cardNum  # 遇到return就退出函数调用。
    # 密码必须为6位。否则不玩了。
    if len(passwd) != 6:
        print("密码长度出错,再见!")
        return
    # 金额必须为100的整数倍。不然提示你金额出错。
    if int(count) % 100 != 0:
        print("金额不为100的整数倍!")
    else:
        # 三个条件 都满足了,我就给你吐钱!
        print("条件满足,准备吐钱。。。")
        return cardNum,count


# 接收返回值  变量 = 函数调用
# carn,money = get_money_V5("123456789000",count=2000)  # 调用
# print(carn,money)
# res = get_money_V5("123456789000")
# print(res)

# tuple_my = "hello",True
# print(tuple_my)

res = get_money_V5("12345678") # 不满足其中一个分支。执行过程中当遇到了return,退出了函数调用。
print(res)

# 函数
# 函数是干嘛的吗??? 功能实现!
# 函数先定义再调用。
# 定义:def 函数名称():
#            实现功能

# 参数:与用户交互。用户输入。
# 在实现功能的时候,需要与外部交互。需要外部提供一定的数据,以实现功能。
# 由需求来决定,有没有参数,有几个参数。

# 参数的类型:位置参数、默认参数、不定长参数(*args,**kwargs)
# 调用的时候:必传位置参数,默认参数可传可不传,也可以用关键字传参(形参=实参)、不定长参数可以传多个。

# 函数在使用之后,给用户的输出。有输入有输出。有反馈。
# 返回值。return关键字实现。
# 1、函数无return,默认调用后的返回值为None
# 2、return 值   值可以是任意类型数据。
# 3、return后可以不跟值。表示返回为None
# 4、调用函数时,遇到return,则结束函数调用。
# 调用的时候,接收功能的输出:变量 = 函数调用

 

posted @ 2020-06-05 16:34  Memory荒年  阅读(541)  评论(0编辑  收藏  举报