5.1 函数的定义

函数是对功能或者动作的封装

def  函数名(形参列表):  # 形式参数函数体(return)return"返回值"     # return表示返回,这个函数在调用之后会得到一个结果
函数名(实参列表)        # 实际参数  将实际参数赋值给形式参数
变量 = 函数名   #  接收return返回值   
# 函数例子 -- 登录验证
def login(username, password):if username == "Agoni" and password == "123":return Trueelse:return False
name = input("请输入账号")
password = input("请输入密码")
if login(name, password):print("进入主页面")
else:print("账号或密码错误")

当函数执行之后,可以给调用者一个返回值 return 表示返回. 这个函数在调用之后会的得到一个结果.

  • 在函数中不写return 表示函数没有返回值,调用方接收到的是None.
  • return 可以终止一个函数的运行
  • 在函数中写了return ,但是return 没有值,表示函数没有返回值,接收的是None
  • 在函数中写return, 后面可以跟多个值,表示返回多个值,接收方收到的是元组

5.2 函数参数

# 参数:函数在调用的时候给函数传递的信息
1.形参: 在函数声明的位置的变量
2.实参:在函数调用的时候给出具体的值
3.传参:把实参赋值给形参的过程# 实参的分类:
1. 位置参数,按照位置给形参赋值
2. 关键字参数.按照形参的名字给参数赋值
3. 混合参数.位置参数必须放在前面,关键字参数在后面# 形参的分类:(3大类)
1. 位置参数. 按照位置来声明形参
2. 默认值参数. 当给参数传递值的时候,默认值不起作用. 默认值必须放在后面
3. 动态参数 (*args, **kwargs)# 参数位置顺序  位置 *agrs 默认值 **kwargs
1. *args 位置参数的动态传参,系统会自动把所有的位置参数聚合成元组
2. **kwargs 关键字参数的动态传参,系统会自动把所有的关键字参数聚合成字典
3. def (*args,**kwargs)  无敌传参,可以是任何参数

5.3 函数参数举例

# 位置参数
def food(moring,noon,night):print(moring,noon,night)
food("牛奶","面条","粥")# 关键字参数
def food(moring,noon,night):print(moring,noon,night)
food(noon="面条",night="粥",moring="牛奶")# 混合参数   位置参数必须放在关键字参数前面
def food(moring,noon,night):print(moring,noon,night)
food("牛奶","面条",night="粥")# 默认值参数
def food(moring,noon,night="烧烤"):print(moring,noon,night)
food("牛奶","饺子")   # 牛奶 饺子 烧烤
food("面包","米饭")   # 面包 米饭 烧烤
food("鸡蛋","凉皮")   # 鸡蛋 凉皮 烧烤# 动态参数  *args   位置动态参数
def Agoni(*food):  # * 表示不定参数,可以传递任意个参数,接收到的是元组print("我要吃",food)
Agoni("鸡翅","芝士肋排","烤肉")
# 我要吃 ('鸡翅', '芝士肋排', '烤肉')# 动态参数  **kwargs  关键字传参的动态参数
def funk(**kwargs):print(kwargs)  #  接收到的是字典
funk(a=1,b=1,c=3)
# {'a': 1, 'b': 2, 'c': 3}def funk(*args):print(args)
lst = ["梅西","哈维","伊涅斯塔","皮克"]
funk(*lst)   #  *在实参位置表示打散,打散的是可迭代对象
# ('梅西', '哈维', '伊涅斯塔', '皮克')def funk(**kwargs):print(kwargs)
dic = {"阿根廷":"梅西","葡萄牙":"C罗","巴西":"内马尔"}
funk(**dic)  # **在这里是把字典打散  此时字典中的key必须是字符串
# {'阿根廷': '梅西', '葡萄牙': 'C罗', '巴西': '内马尔'}# * 处理剩下的元素
a,*b = (1, 2, 3, 4,)
print(a, b) # 1 [2, 3, 4]
*rest,a,b = range(5)
print(rest, a, b) # [0, 1, 2] 3 4
print([1, 2, *[3, 4, 5]]) # [1, 2, 3, 4, 5]

5.4 名称空间

1.Python最开始会开辟一个自己的命名空间 -- 内置命名空间
2.直接在py文件一个层面上是全局名称空间a = 1print(a)
3.在函数内部属于局部名称空间def func():s = 1
# 加载顺序: 内置 -- 全局 -- 局部
# 取值顺序: 局部 -- 全局 -- 内置a = 1def s():print(a)s()

5.5 作用域

# 作用域: 变量或者函数的声明周期1. 全局作用域: 全局名称空间+内置名称空间
2. 局部作用域:局部名称空间globals() 查看全局作用域中的内容locals()   查看当前作用域中的内容
3. global  nonlocalglobal : 在局部引入全局变量nonlocal : 在局部,引入离他最近的那一层变量

5.6 函数的嵌套

def outer():def inter():print("我是内部")print("我是外部")inter()
outer()
# 我是内部
# 我是外部
# 函数的嵌套和 global , nonlocal 的结合
a = 10
def func():global a   # 引入全局中的变量a   可以定于全局变量a = 20print(a)
print(a)   # 是全局中a的值
func()     # 函数(局部)中a的值
print(a)   # 将全局中a拉进函数内部,重新赋值,全局中a也改变
# 结果 10 20 20 def outer():a = 10def inner():nonlocal a  # 找的是局部当中,最近的上层变量a = 20print(a)print(a)   # 10inner()    # 20print(a)   # 20
outer()

转载于:https://www.cnblogs.com/Agoni-7/p/11048098.html

Python -- 函数相关推荐

  1. Pass算子python 函数

    Pass算子python 函数 函数 • 函数是代码的一种组织形式 • 函数应该能完成一项特定的工作,而且一般一个函数只完成一项工作 • 有些语言,分函数和过程两个概念,通俗解释是,有返回结果的是函数 ...

  2. Python 函数的可变参数(*paramter与**paramter)的使用

    Python 函数的可变参数主要有 *paramter与**paramter 可变参数主要有 *paramter的作用 接受任意多个实际参数并放到一个元组中 def people(*people):f ...

  3. 【python教程入门学习】Python函数定义及传参方式详解(4种)

    这篇文章主要介绍了Python函数定义及传参方式详解(4种),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 一.函数初识 1.定 ...

  4. python系统提供构造函数传入参数_[ Python入门教程 ] Python函数定义和使用

    函数是一段可以重复多次调用的代码,通过输入的参数值,返回需要的结果.通过使用函数,可以提高代码的重复利用率.本文主要介绍Python函数的定义.调用和函数参数设置方法. 函数的定义 Python函数定 ...

  5. python函数第二次运行报错_Python学习笔记2-函数、高级特性

    函数 调用函数 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数 >>> abs(100) 100 >>> abs(-20) 20 ...

  6. [教程]Python函数的参数

    Python函数的参数 位置参数.默认值参数.可变参数.关键字参数和命名关键字参数 1 函数结构 def 函数名(参数):函数体返回值 2 位置参数 略 3 默认值参数 略 4 可变参数 # 可变长度 ...

  7. python函数+定义+调用+多返回值+匿名函数+lambda+高级函数(reduce、map、filter)

    python函数+定义+调用+多返回值+匿名函数+lambda+高级函数(reduce.map.filter) Python 中函数的应用非常广泛,比如 input() .print().range( ...

  8. python函数参数*arg和**kwargs分别代表什么?

    python函数参数*arg和**kwargs分别代表什么? 注意: 注意:参数arg.*args.**kwargs三个参数的位置必须是一定的.必须是(arg,*args,**kwargs)这个顺序, ...

  9. python 函数 默认参数

    python 函数 默认参数 def add(a=1, b=2): # a,b设置默认参数c = a + breturn c c = add(a=2) # 如果不填,就是默认参数 print(c) 4

  10. Python的零基础超详细讲解(第十二天)-Python函数及使用

    基础篇往期文章: Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博 ...

最新文章

  1. mac terminal
  2. thinkphp-volist2
  3. 转载-让PIP源使用国内镜像,提升下载速度和安装成功率
  4. CVPR 2018 SA-Siam:《A Twofold Siamese Network for Real-Time Object Tracking》论文笔记
  5. 是网关吗_什么是边缘控制器?就是IPC+PLC+网关吗?今天就拆开一个来看看
  6. 插入数据前查询是否存在_异步检测数据是否存在的修订
  7. swift 静态库、动态库
  8. kafkatemplate无法注入_SpringBoot 整合 Spring-Kafka 深度踩坑实战
  9. vscode c++ 开发环境搭建(离线、内网)
  10. arduino/mixly 智纳捷TTS语音合成模块
  11. Matlab中max函数详解
  12. 聚合支付系统设计(一)
  13. 数学四大思想八大方法_四种思想方法,让你轻松掌握高中数学
  14. C语言标准库中round函数
  15. 作业2.EVE ensp 模拟器CONSOLE接口密码设置
  16. QT教程—1.1Qt入门
  17. swagger2报错Illegal DefaultValue null for parameter type integer
  18. Gitee项目分享——学之思开源考试系统
  19. 自学IT 必去的两个学习网站
  20. item_search_img - 按图搜索义乌购商品(拍立淘)

热门文章

  1. 单片机flash通用读写库:TZFlash
  2. LLMs:《Efficient and Effective Text Encoding for Chinese LLaMA and Alpaca》翻译与解读
  3. 无线网关服务器卡怎么插,工业网关SIM卡安装方法 工业网关使用说明
  4. 应用时间序列分析--有季节效应的非平稳序列分析-ARIMA乘法模型-R语言
  5. 银行家算法 php 例子,四舍六入五成双银行家算法的 PHP和Javascript实现
  6. Artifactory7安装流程
  7. vue+better-scroll实现类似京东的分类列表
  8. 台式计算机性能,只看性能就错了 台式机笔记本谁更适合你
  9. qt通过ui设计师添加界面到代码步骤
  10. 配置 Hi提醒 让直播提醒机器人消息在主播开播自动推送消息到钉钉群