Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >函数基础

函数基础

作者头像
py3study
发布于 2020-01-15 15:22:52
发布于 2020-01-15 15:22:52
31600
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

函数体系

接下来,我们将按照这个函数体系给大家详细的介绍函数:

  • 什么是函数?
  • 为什么要用函数?
  • 函数的分类:内置函数与自定义函数
  • 如何自定义函数
    • 语法
    • 定义有参数函数,及有参函数的应用场景
    • 定义无参数函数,及无参函数的应用场景
    • 定义空函数,及空函数的应用场景
  • 调用函数
    • 如何调用函数
    • 函数的返回值
    • 函数参数的应用:形参和实参,位置形参,位置实参,关键字实参,默认形参,*args,**kwargs
  • 高阶函数(函数对象)
  • 函数嵌套
  • 作用域与名称空间
  • 装饰器
  • 迭代器与生成器及协程函数
  • 三元运算,列表解析、生成器表达式
  • 函数的递归调用
  • 内置函数
  • 面向过程编程与函数式编程

如果现在有一个需求需要实现用户登录注册的功能,我们该怎么实现呢?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 注册
username = input('username: ').strip()
pwd = input('password: ').strip()

with open('38a.txt', 'a', encoding='utf8') as fa:
    fa.write(f"{username}:{pwd}\n")
    fa.flush()
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 登录
inp_username = input('username: ').strip()
inp_pwd = input('password: ').strip()

with open('38a.txt', 'rt', encoding='utf8') as fr:
    for user_info in fr:
        user_info = user_info.strip('\n')
        user_info_list = user_info.split(':')
        if inp_username == user_info_list[0] and inp_pwd == user_info_list[1]:
            print('login successful')
            break
    else:
        print('failed')

什么是函数?(掌握)

假设现在你是下水道工,如果你事先准备好你的工具箱,等你接到修理下水道的工作的时候,你直接把你的工具箱拿过去直接使用就行了,而不需要临时准备锤子啥的。

在程序中,函数就是具备某一功能的工具,事先将工具准备好就是函数的定义,遇到应用场景拿来就用就是函数的调用。

为何用函数(掌握)

如果不使用函数,写程序时将会遇到这三个问题:

  1. 程序冗长
  2. 程序的扩展性差
  3. 程序的可读性差

如何用函数(掌握)

先定义函数,后调用。

  • 定义函数:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def 函数名(param1、param2……):
    """
    函数功能的描述信息
    :param1:描述
    :param2:描述
    :return:返回值
    """
    code 1
    code 2
    code 3
    ...

    return 返回值
  • 调用函数
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
函数名(param1、param2……)

注册功能函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 注册功能函数
def register():
    """注册功能"""
    username = input('username: ').strip()
    pwd = input('password: ').strip()

    with open('38a.txt', 'a', encoding='utf8') as fa:
        fa.write(f"{username}:{pwd}\n")
        fa.flush()


register()
# 复用
register()
register()

登录功能函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 登录功能函数
def login():
    """登录功能"""
    inp_username = input('username: ').strip()
    inp_pwd = input('password: ').strip()

    with open('38a.txt', 'rt', encoding='utf8') as fr:
        for user_info in fr:
            user_info = user_info.strip('\n')
            user_info_list = user_info.split(':')
            if inp_username == user_info_list[0] and inp_pwd == user_info_list[1]:
                print('login successful')
                break
        else:
            print('failed')


login()

函数定义阶段

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def func():
    bar()  # 不属于语法错误,不会报错
    print('*'*10)
  1. 只检测语法,不执行函数体代码

函数调用阶段

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def bar():
    print('from bar')

def foo():
    print('from foo')
    bar()

foo()
'''
from foo
from bar
'''
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def foo():
    print('from foo')
    bar()
    
def bar():
    print('from bar')

foo()
'''
from foo
from bar
'''
  1. 执行函数代码
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/05/29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
函数学习总结
自己总结:就相当于现实中各种用途的工具,有着对数据进行各种处理的功能(实质就是比较复杂的变量?!)
py3study
2020/01/15
3510
python面向过程编程小程序 -ATM(里面用了终端打印)
06.09自我总结 1.文件摆放 ├── xxxx │ ├── run.py │ └── fil_mode.py │ └── data_time.py │ └── loading.py │ └── data_time.py │ └── register.py │ └── login.py │ └── top_up.py │ └── balance_enquiry.py │ └── shopping.py │ └── freeze.py 2.运行文件 1.run r
小小咸鱼YwY
2019/07/24
5470
python面向过程编程小程序 -ATM(里面用了终端打印)
面向过程编程
面向过程编程是解决问题的一种思想,相当于武林门派,武林门派之间没有好坏之分,因此它与我们之后学习的面向对象编程其实没有好坏之分。
py3study
2020/01/16
5780
Python Day3
#如果是windows平台一般还要加上一个小r,意思是取消路径中/的转义功能(不用写//了) #默认t,指的是文本文件,文本里面存放的是字符,因此涉及到字符编码,如果不指定使用什么字符编码打开就按默认操作系统默认编码打卡,windows默认GBK f=open(r'a.txt','r',encoding='utf-8') #读 #这一步说明发送了一个请求给操作系统,把某个文件已什么字符编码打开,同时还拿到了一个变量f
py3study
2020/01/03
5620
闭包函数和装饰器
闭包:闭是封闭(函数内部嵌套函数),包是包含,闭包是指该内部函数对外部作用域而非全局作用域的变量的引用。
GH
2022/05/10
3490
内置函数,面向过程编程
分层实现功能的好处:当我们需要实现web端和app端的软件,我们只要把数据处理层和接口层写好,然后实现不同的用户功能层即可,web端使用web端的用户功能层,app端使用app端的用户功能层,但是接口层和数据处理层是通用的。
py3study
2020/01/15
4160
【python实现学生选课系统】
在当今数字化时代,学生管理系统不仅是教育机构的需求,也是提高教学效率和学生体验的必备工具。Python,作为一种强大而灵活的编程语言,为开发学生选课系统提供了理想的平台。从简单的课程选择到高级的管理功能,Python的优雅性和直观性使其成为开发者们的首选。本文将引导您通过Python创建一个功能强大的学生选课系统,深入了解如何利用技术为教育领域注入新的活力。
老虎也淘气
2024/01/30
3210
python3--函数初识
函数能提高应用的模块性,和代码的重复利用率。已经知道python提高了许多内建函数,比如print(),len()等。但你也可以自己创建函数,这被叫做用户自定义函数。
py3study
2018/08/02
5360
python面向过程编程 - ATM
前面程序整合加自定义日志 1.文件摆放 ├── xxxx │ ├── src.py │ └── fil_mode.py │ └── data_time.py │ └── loading.py │ └── data_time.py │ └── logger.py 2.运行文件 1.run src.py # 导入需要用到的所有内置模块 import logging import time import json import os from fil_mode import * from
小小咸鱼YwY
2019/07/24
8650
python 学习第二周总复习
如果l2是l1的拷贝对象,则l1内部的任何数据类型的元素变化,则l2内部的元素也会跟着改变,因为可变类型值变id不变
py3study
2020/01/15
4170
对于之前小程序的优化,解决文件没有需要新建问题
https://www.cnblogs.com/pythonywy/p/10957368.html之前的函数没有自动新建文件功能必须有有文件才能正常运行
小小咸鱼YwY
2019/07/24
5420
客户端与服务端多功能传输练手小程序
客户端与服务端多功能传输小程序 server.py from threading import Thread,Event,Lock from concurrent.futures import ThreadPoolExecutor from socket import socket from struct import pack,unpack from json import * import os PATH = os.path.dirname(os.path.abspath(__file__)) S
小小咸鱼YwY
2019/07/24
9130
Python基础09-装饰器
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/09/26
2700
Python基础09-装饰器
函数 之装饰器
  在看装饰器之前,我们先来搞清楚什么是闭包函数。python是一种面向对象的编程语言,在python中一切皆对象,这样就使得变量所拥有的属性,函数也同样拥有。这样我们就可以理解在函数内创建一个函数的行为是完全合法的。这种函数被叫做内嵌函数,这种函数只可以在外部函数的作用域内被正常调用,在外部函数的作用域之外调用会报错,例如:
全栈程序员站长
2022/07/21
4260
函数 之装饰器
python 装饰器构造优酷视频登录程序
功能: 1.用户3次登录,全部失败后,返回菜单 2.用户必须登录才可以看电影 3.用户注册,注册普通用户和VIP用户 4.已经存在的用户,不允许重复注册 4.VIP用户可以看所有电影,普通用户不能看后缀有VIP的电影 5.可以随时返回主菜单 完整代码如下: #!/usr/bin/env python # coding: utf-8 __author__ = 'www.py3study.com' import time,os,sys ''' 本脚本运行会自动创建用户列表文件user_list.txt 看
py3study
2018/08/02
5990
Python入门之函数的介绍/定义/定义类型/函数调用/Return
 本篇目录:     一、 函数的介绍     二、 函数的定义     三、 定义函数的三种类型     四、 函数调用的阶段     五、 Return返回值 ========================================================================== 一、 函数的介绍   1. 什么是函数?为什么要有函数?     1.1. 具备一个特定功能的工具(类比)>>>函数     1.2  事先准备工具的过程(类比)>>>函数的定义     1.3 工
Jetpropelledsnake21
2018/05/02
1.4K0
Python入门之函数的介绍/定义/定义类型/函数调用/Return
超市购物功能,会员卡功能,会员卡积分查询功能,会员卡奖品功能,自己练手函数程序
函数自己练手一晚上敲的,各位博主可以走过路过可以来瞧瞧,欢迎评价提需求哈哈 total_prices = 0 def chiose(action): '''0是注册功能,1是会员卡系统,2是购物功能,3是会员查找积分功能,4为会员积分兑换功能''' #注册功能 if action == 0: # 注册内容 def register(): while True: print('注册账号'.cent
小小咸鱼YwY
2019/07/24
1.4K0
python『学习之路03』装饰器
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/11/19 10:45 # @Author : mixiu26 # def foo(): # print("in the foo") # bar() ---->> bar() 方法未定义 # foo() # # def bar(): # print("in the bar()") # def foo(): # print("in the foo()") # bar() ---- >> 正常运行 # foo() # 改进: 内存加载时机是先定义在调用, 函数也是变量,所以呢,代码运行逻辑是从上到下,就是在调用foo()之前, 就先在内存中定义了 # 变量foo,就是将方法体赋给foo, 这里其实什么也没有做, 然后定义bar()这个函数,然后在调用运行foo()这个函数,而在运行它之前 # foo() 和 bar() 这个方法已经存在了, 变量的使用规则就是,先定义在使用, 这里也一样适用 --- >> 函数即'变量' # def foo(): # print("in the foo()") # bar() # ---- >> 正常运行 # def bar(): # print("in the bar()") # foo() # 改进: # def foo(): # print("in the foo()") # bar() # ---- >> 无法正常运行 --- >>因为foo()调用前 bar()还未定义 # foo() # def bar(): # print("in the bar()") # 高阶函数:=========================>> # 1.吧一个函数当做实参传递给另外一个函数: # 2.返回值中包含函数名 # def bar(): # print("in the bar()") # def test1(func): # print(func) # bar的内存地址: <function bar at 0x0000000002452E18> # func() # in the bar() # # test1(bar) # in the bar() # 解释, 首先函数即是变量不解释, 关于变量的使用 ---- >> x = 1; y = x; ----- >> y = 1 # 我们调用test1() --- >>传入了bar ---- 这里的bar == func ---- >>其实就是把bar的内存地址给了func , # 因为bar在内存中作为一个变量来存储方法体, test1中吧bar传给func, 那么这里的func == bar了 --- 他们指向的方法体是一样的只不过在加了个func的引用而已 import time # 函数作为实参传递的高阶函数 # def bar(): # time.sleep(3) # print("in the bar()") # in the bar() # # def test1(func): # start_time = time.time() # func() # sttop_time = time.time() # print("the func run time is %s" %(sttop_time-start_time)) # the func run time is 3.010805130004883 # test1(bar) # in the bar() # 返回值中携带函数的高阶函数: # def bar(): # time.sleep(3) # print("in the bar") # # def test2(func): # print(func) # return func # 注意传值问题: # test2(bar()) ---- >> 这样传值就不符合高阶函数定义, 是要把函数作为实参传递, 如果你带了括号传递的就是bar() 这个方法的返回值 # 而传递: test(bar) ---- >> 这里的bar 传递的就是地址值, 是这个方法体的引用, 所以传递的时候一定要注意 # test2(bar) # 当我们吧bar传过来, test2就开始打印bar的内存地址, 打印完成后又返回bar的内存地址, # 我们将test2的运行结果进行接收: 注意了,我们知道, 函数即是变量. so --- >>ret() <=
呆呆
2021/05/18
3750
python-面向过程、面向对象、类
前言:编程不就编程吗?怎么还有这么多的洋气词后缀??今天主要介绍一下面向过程和面向对象是什么。
HammerZe
2022/03/25
4530
python3 简单登录,注册测试代码
写个登录,注册的简单代码。只用来简单测试,实现简单功能,没有过多的条件判断。仅仅用来练习。
py3study
2020/01/03
8700
相关推荐
函数学习总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验