函数

1.函数的三种定义方式

函数如果没被调用,则运行只会检查函数内的语法,不会执行函数里的代码

1.空函数

def hanshuming():
    #TODO    这个函数的功能,暂时不会写
    pass	#写个空函数,占个位置

2.有参函数

def hanshuming(x,y)
	if x>y:
    	print(x)
     else:
        print(y)
hanshuming(30,20) #调用函数

3.无参函数

def hanshuming():
    print(1)

func()  #调用函数

2.函数的返回值

当我们需要函数的执行结果时,这时就是要拿到函数的返回值

(1)如果函数没有返回值,默认返回None

None就是返回值,调用函数得到的一个结果

(2)函数可以通过return返回出返回值

(3)return可以终止函数

​ 终止的是函数,当函数终止时,其内部的循环或其他程序也会停止

(4)return可以返回多个值,以元组(相当于列表)的形式存储

3.函数的参数(形参、实参)

1.形参(位置形参、默认形参)

(1)位置形参:从左到右一个一个写过去,就叫做位置形参

  • 与位置实参一一对应,依次接收值

(2)默认形参:给位置形参一个默认值,让它成为默认形参

  • 默认形参:以后调用不需要为它传值,但是如果为它传值,他也会接收。

  • 默认参数必须放在最后面(即放在位置参数的后面)

(3)形参的一些格式

形参后面跟 冒号(:)+数据类型 ;定义函数时 括号内的意思 ( -> 关键字 )

def f1(nums: list, target: int) -> int:
    print(nums, target)
    return [1, 2]
#冒号后面的数据类型是指该参数要用的数据类型,但不是限制死的
#而第一行最后的int,是指函数的返回值必须为int类型,是限制死的
def compare(num1, num2=140):  # 形参:一般具有描述意义,毫无作用,只是用来接收实参)相当于 变量名用来接收变量值

    if num1 > num2:
         print(num1)
    else:
        print(num2)

2.实参(位置实参、关键字实参)

(1)位置实参:从左到右一个一个写过去,就叫做位置实参

  • 与位置形参一一对应,依次传值

(2)关键字实参:位置实参加上默认值,然后按照位置形参名传值

  • 关键字实参必须放在位置实参后面

  • 关键字实参,按照位置实参名给值,一般用于参数过多(一般建议函数参数不超过3个)

4.注册和登陆的函数

1.注册函数

def register():
    # 注册
    print('注册功能')
    username_inp = input('请输入你的用户名:')
    print('username_inp:', username_inp)
    pwd_inp = input('请输入你的密码:')
    print('pwd_inp:', pwd_inp)

    with open('user_info.txt', 'a', encoding='utf8') as fa:
        if ':' in username_inp:
            print('输入错误,用户名不能含有 :')
        else:
            fa.write(f'|{username_inp}:{pwd_inp}')

            print('保存成功')
register()

2.登陆函数

def login():
    # 登陆
    print('登录功能')
    username_inp = input('请输入你的用户名:')
    pwd_inp = input('请输入你的密码:')
    with open('user_info.txt', 'r', encoding='utf8') as fr:
        data = fr.read()
        data_split = data.split('|')
        j=0
        for i in data_split:
            j+=1
            i=i.split(':')
            if username_inp==i[0] and pwd_inp==i[1]:
                print('登陆成功')
                break
            else:
                if j==len(data_split):
                    print('登陆失败')
                else:
                    continue
login()                    
posted @ 2019-09-02 16:58  BigSun丶  阅读(107)  评论(0编辑  收藏  举报