首页 > 编程语言 >函数概念及python函数语法

函数概念及python函数语法

时间:2022-10-09 20:24:03浏览次数:63  
标签:return 函数 python 语法 userinfo print 返回值 True

函数

函数的应用场景

函数是广泛应用于编程语言的一个方法,能够用于解决代码冗余的问题。

我们来看这么一个场景:

# 校验程序
userinfo = {  # 用字典存储用户的状态
    'name': 'leethon',
    'is_pass': True,
    'readable': True,
}
if userinfo.get('name') == 'leethon' and \  # 每个条件都满足了
        userinfo.get('is_pass') is True and \
        userinfo.get('readable') == True:
    # 校验用户状态成功可以进行读取操作等
    pass

userinfo['is_pass'] = False  # 用户状态发生变化
if userinfo.get('name') == 'leethon' and \
        userinfo.get('is_pass') is True and \  # 这一个条件没有满足不执行
        userinfo.get('readable') == True:  
    # 校验用户状态成功可以进行读取操作等
    pass

在上述场景中,可以看见当多次需要校验的时候,那段庞杂的校验每次都要重新写一遍,使代码有很多重复的部分,这种情况多了很占用空间。而且抛去这一点不谈,当需要校验时,重新找到这段代码复制过来也是十分麻烦的,所以就要用到我们今天要说的主角——函数。

# 函数演示
def checkout(userinfo):
    if userinfo.get('name') == 'leethon' and \ 
        userinfo.get('is_pass') is True and \
        userinfo.get('readable') == True:
    # 校验用户状态成功可以进行读取操作等
    pass

userinfo = {  # 用字典存储用户的状态
    'name': 'leethon',
    'is_pass': True,
    'readable': True,
}
checkout(userinfo)
userinfo['is_pass'] = False  # 用户状态发生变化
checkout(userinfo)

对比两份程序可以看出,当我们想用那一段庞杂的代码时,就不用在重新写一段了,只要在用的时候简单的写一句checkout(userinfo)就达到了同样的效果。

而具体的操作将在下文继续详解。

函数的语法结构

  • 基础结构
def 函数名():  # 定义
    函数体代码
    
函数名()  # 调用

函数的定义与调用

  • 定义:def后面跟函数名加括号冒号,下一行缩进开始写函数体代码。这个过程是定义。

    这个过程也被描述为把函数体代码封装起来,函数带着功能属性。

  • 调用:当我们想使用某个已经定义了的函数功能时,只需要用函数名加括号的形式就能使用,这个过程叫做调用。

三种进阶结构

在基本结构上,我们还可以加入参数和返回值得到另外三种结构

  1. 空函数结构

    def 函数名():
        pass  # 指什么都不做
    

    当我们在定义一个函数的时候,有时可能只是先确定一个大概的功能,但还没有具体的函数体代码,那我们就可以用pass执行一个空语句,这样做仅仅是为了补全代码结构,防止报错。

  2. 含参结构

    def 函数名(参数):  # 定义
        函数体代码
    
    函数名(对应参数)  # 调用
    

    当定义时,括号里有变量名,则这些变量为参数。

    在调用阶段可以填入数据值,这些参数变量会以一定的方式接受变量。

  3. 含返回值结构

    def 函数名():  # 定义
        函数体代码
        return 一个值
        
    print(函数名())  # 调用函数,并打印返回值
    

    这里先简单的书写一下结构,在后文再进行说明。

函数的返回值

什么是返回值

在我们学习内置方法pop时,我们称这种删除列表元素的方法成为‘弹出’

我们将pop()视为一个函数的话,那我们在执行完这个函数完得到的值就是返回值,这个返回值不仅能打印,如果是数字还能用于计算,等等。

l1 = [1, 2, 3, 4]
print(l1.pop())  # 4
# 执行了删除末尾元素的功能,并且拿到了这个元素,还能打印
print(l1.pop() + 6)  # 9
# 第二次执行了删除末尾元素的功能,即拿到了3这个元素,与6进行加和,得到了9

返回值的实现 —— return

返回值的关键字是return,它只能在def下的函数体中使用。

  • 函数体中可以没有return,视为没有返回值,或者返回值为None

  • 函数体可以单独使用return,函数体代码的结束,返回值同样为None

    def func():
        print('我是函数体代码')
        print('看到我就结束了')
        return 
    	print('我应该是不会被打印的,你可以试试')
        
    func()
    
    ## 运行结果
    我是函数体代码
    看到我就结束了
    
  • return后可以跟一个数据值,返回值为这个数据值

    def func():
        return '我是返回值'
    
    print(func())  # 我是返回值
    
  • return后可以跟多个数据值(用逗号隔开),会自动将多个数据值组合为元组作为返回值

    def func():
        return 111, 222 ,333
    
    print(func())  # (111, 222, 333)
    

总的来说,调用函数时,会执行到return之前的函数体代码,并得到一个返回值,这个返回值是return后面的数据值。

函数的参数

根据定义阶段,函数名()括号内部有没有变量,可以将函数分为无参函数和有参函数。

无参函数不必多说了,就是上文的基础结构函数。

而关于有参函数,我们要提出两个概念。

  • 形参:形式参数,指定义阶段在括号里面的变量名,它们模拟变量参与代码的操作与运算
  • 实参:实际参数,指调用阶段在括号里面的数据值,它们实际参与代码的操作与运算
# 例子
def my_sum(num1, num2):  # num1和num2就是形参
    print(num1,num2)
    return num1 + num2

print(my_sum(1, 2))  # 这里括号里的1和2就是实参

## 运行结果
1 2
3
##
1.先是定义了函数my_sum,定义了形参num1,num2
2.调用了函数my_sum
3.传入了实参,1和2
4.执行函数体代码,打印了1和2
5.返回了两个参数的和,为3,由print打印了出来。

练习

将上一篇文章中的注册功能和登录功能封装为函数(定义并调用)

def register():  # 注册功能
    while True:
        # 输入用户名和密码
        username = input('注册的用户名:')
        password = input('请输入密码:')
        # 判断用户名是否存在
        with open(r'userinfo.txt', 'r', encoding='utf8') as f:
            for line in f:
                user, pwd = line.strip().split('|')
                if user == username:
                    print('用户名已经存在,请更换用户名')
                    break
            else:
                # 注册,把用户和密码存到文件里
                with open(r'userinfo.txt', 'a', encoding='utf8') as f1:
                    f1.write(f'{username}|{password}\n')
                    print(f'用户{username}注册成功')
                    break


def login():  # 登录功能
    while True:
        # 输入用户密码
        username = input('请输入用户名:')
        password = input('请输入密码:')
        # 核验密码登录
        with open(r'userinfo.txt', 'r', encoding='utf8') as f:
            for line in f:
                user, pwd = line.strip().split('|')
                if user == username and pwd == password:
                    print('登录成功')
                    break
            else:
                print('用户名或密码输入错误,请重新输入')
            break


while True:
    choice = input('1注册|2登录|q退出:')
    if choice == '1':
        register()
    elif choice == '2':
        login()
    elif choice == 'q':
        break
    else:
        print('请输入有效的编号!')

标签:return,函数,python,语法,userinfo,print,返回值,True
From: https://www.cnblogs.com/Leethon-lizhilog/p/16773525.html

相关文章

  • 函数的初识
    计算机硬盘修改数据的原理文件内容修改函数前戏函数的语法结构函数的定义与调用函数的分类函数的返回值函数的参数计算机硬盘修改数据的原理硬盘写数据可以理解......
  • TCP和UDP的区别与联系以及网络字节序和主机字节序的转换函数实践
    TCP和UDP的区别TCP是一个面向连接的、可靠的、基于字节流的传输层协议。而UDP是一个面向无连接的传输层协议。具体来分析,和 UDP 相比,TCP 有三大核心特性:面向连接:所......
  • 初入函数
    文件内指示标移动案例importtimewithopen(r'a.txt','rb')asf:f.seek(0,2)whileTrue:line=f.readline()iflen(line)==0:......
  • python基础入门之函数
    python基础入门之函数目录python基础入门之函数一、函数的概念二、函数的语法结构1、格式2、格式信息的解释三、函数的定义与调用四、函数分类五、函数的返回值1、什么是......
  • 函数
    一、函数的定义概述:一段相同的代码在不同的地方要反复执行,为了减少重复代码,可将这段代码封装起来,定义一个函数,以后要用到的时候每次调用这个函数就好了。函数相当于具有一......
  • mysql创建函数时提示1418。可选关闭二进制日志或者设置log_bin_trust_function_creato
    报错详情如下:1418--ThisfunctionhasnoneofDETERMINISTIC,NOSQL,orREADSSQLDATAinitsdeclarationandbinaryloggingisenabled(you*might*wanttouse......
  • python文件操作
    python文件操作文件的概念文件就像是系统呈现在我们面前的能够使用硬盘的快捷方式,文件可以是文本文档、图片、程序等等。文件通常具有点+三个字母的文件扩展名,用于指示文......
  • Java基本语法 for循环
    for循环虽然所有循环结构都可以用while或者do...while表示,但Java提供了另一种语句——for循环,使一些循环结构变得更加简单。for循环执行的次数是在执行前就确定......
  • Python学习路程——Day09
    Python学习路程——Day09文件操作1、文件的概念''' 操作系统为了使用户更好的使用计算机,而创建的一个快捷方式。 双击一个文件,相当于把硬盘的数据资源加载到内存中。......
  • 文件的修改与函数
    文件的修改计算机硬盘修改数据的原理硬盘有两个形态占有态和自由态我们在删除数据的时候,就是将原来的位置标记为自由态,在下载新数据落到这个自由态原本的标记位置就会......