04-Python函数
一、简介
函数是可重用的程序代码块。函数的作用,不仅可以实现代码的复用,更能实现代码的一致性。一致性指的是,只要修改函数的代码,则所有调用该函数的地方都能得到体现。
函数用关键字def来定义,def关键字之后跟一个函数标识符名称。然后跟一对圆括号,圆括号中可以包括一些变量名,然后以冒号结束。如下所示:
def 函数名([参数列表]) :
函数体/若干语句
def num(a, b):
return a + b
print(num(10, 5))
执行结果为:
15
在这个函数中,我们创建了一个名为num的函数,并且给了两个变量a和b,最后返回a和b的和。在调用时,a和b的值不同则返回的和也会改变。
函数代表一个个任务和功能,使用函数可以减少代码的重复,从而提高效率。
二、函数的参数
函数取得的参数是我们提供给函数的值, 一般分为实际参数和形式参数,我们一般叫做实参和形参,形参是在定义函数时使用的参数,形式参数的命名要符合标识符的命名规则。实际参数是调用函数时传递的参数,如下例子中,a和b叫做形式参数,10和20叫做实际参数。
def num(a, b):
print(a + b)
num(10, 20)
三、全局变量和局部变量
全局变量:
1. 在函数和类定义之外声明的变量。作用域为定义的模块,从定义位置开始直到模块结束。
2. 全局变量降低了函数的通用性和可读性。应尽量避免全局变量的使用。
3. 全局变量一般做常量使用。
4. 函数内要改变全局变量的值,使用global 声明一下。
局部变量:
1.在函数体中(包含形式参数)声明的变量。
2.局部变量的引用比全局变量快,优先考虑使用。
3.如果局部变量和全局变量同名,则在函数内隐藏全局变量,只使用同名的局部变量。
a = 20
def fun():
a = 2
print(a)
fun()
print(a)
运行结果:
在这个函数中调用函数时,第一次输出的a 是局部变量的a,在全局输出时输出的a是全局变量的a。如果要在函数块中使用全局变量则要使用global完成这一功能,如下所示:
a = 20
def fun():
global a
print(a)
a = 5
print(a)
fun()
输出结果:
在第一个变量a中,使用global声明,因此输出结果为全局变量a=20,第二次输出则是局部变量a=5。
局部变量的查询和访问速度比全局变量快,优先考虑使用,全局变量容易导致不知道变量出错,所以应该尽量少使用全局变量。
nonlocal 用来声明外层的局部变量。
global 用来声明全局变量。
四、命名参数
按照形参的名称传递参数,称为“命名参数”,也称“关键字参数”。
def num(a,b,c):
print(a,b,c)
num(1,2,3)
num(a=4, b=6, c=5)
在上述例子中,num(1,2,3)叫做位置参数,即按照位置来传递参数,num(a=4, b=6, c=5)叫做命名参数。
五、可变参数
可变参数指的是“可变数量的参数”。分两种情况:
1. *param(一个星号),将多个参数收集到一个“元组”对象中。
2. **param(两个星号),将多个参数收集到一个“字典”对象中。
def fun(a,b,*c,**d): print(a,b,c,d) fun(1,2,3,4,5,six=6,seven=7)
输出结果:
在这个函数中,1和2分别传递给a和b,3,4,5则作为元组传递到可变参数c中,6,7以字典形式传递到d中。
五、LEGB 规则
Python 在查找“名称”时,是按照LEGB 规则查找的:
- Local-->Enclosed-->Global-->Built in
1.Local 指的就是函数或者类的方法内部
2.Enclosed 指的是嵌套函数(一个函数包裹另一个函数,闭包)
3.Global 指的是模块中的全局变量
4.Built in 指的是Python 为自己保留的特殊名称。
如果某个名称映射在局部(local)命名空间中没有找到,接下来就会在闭包作用域
(enclosed)进行搜索,如果闭包作用域也没有找到,Python 就会到全局(global)命名空
间中进行查找,最后会在内建(built-in)命名空间搜索,如果都没有找到,则会报错NameError)。
04-Python函数的更多相关文章
- Python函数04/生成器/推导式/内置函数
Python函数04/生成器/推导式/内置函数 目录 Python函数04/生成器/推导式/内置函数 内容大纲 1.生成器 2.推导式 3.内置函数(一) 4.今日总结 5.今日练习 内容大纲 1.生 ...
- Python函数讲解
Python函数
- Day03 - Python 函数
1. 函数简介 函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.Python提供了许多内建函数,比如print():也可以自己创建函数,这 ...
- Python 函数返回值
本章详细介绍 返回值: 0x 00 返回值简介 0x 01 指定返回值与隐含返回值 0x 02 return 语句位置与多条 return 语句 0x 03 返回值类型 0x 04 函数嵌套 0x 0 ...
- 初识代码封装工具SWIG(回调Python函数)
这不是我最早使用swig了,之前在写Kynetix的时候就使用了swig为python封装了C语言写的扩展模块.但是当时我对C++还不是很了解,对其中的一些概念也只是拿来直接用,没有理解到底是什么,为 ...
- (python函数03)zip()函数
(python函数03)zip()函数 zip是用来压缩的,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个元组(tuple),然后返回有这些tuples组成的对象,可强制转化为列表和 ...
- python 函数之day3
一 函数的语法及特性 什么是函数? 定义:函数是一个功能通过一组语句的集合,由名字(函数名)将其封装起来的代码块,要想执行这个函数,只要调用其函数名即可. 特性: 减少重复代码 使程序变的可扩展 使程 ...
- Python函数作用域的查找顺序
函数作用域的LEGB顺序 1.什么是LEGB? L:local 函数内部作用域 E:enclosing 函数内部与内嵌函数之间 G:global 全局作用域 B:build-in 内置作用域 2.它们 ...
- Python函数信息
Python函数func的信息可以通过func.func_*和func.func_code来获取 一.先看看它们的应用吧: 1.获取原函数名称: 1 >>> def yes():pa ...
- ubuntu14.04 python自带版本升级
ubuntu14.04 python自带版本升级 sudo add-apt-repository ppa:fkrull/deadsnakes-python2. sudo apt-get update ...
随机推荐
- 驱动开发 —— 从零开始(1) 配置vs20xx+wdkxx环境
网上教程很多.如何去安装如何去配置 但是也有些坑感觉并不是那么的完善 wdk+vs下载链接:https://docs.microsoft.com/zh-cn/windows-hardware/driv ...
- PIVOT | UNPIVOT_1
Pivot应用 /* <Microsoft SQL Server 2008 T-SQL Fundamentals (PRO-Developer)> <Microsoft SQL Se ...
- NativeXml实例训练时注意事项_1
NativeXml实例训练: 1)使用NativeXml操作xml文件时,需要将几个单元文件在Library中引用,配置好这个后面的就可自由训练.或按照自己想要的组合折腾. 2)运行程序调 ...
- matlab-整数规划(非线性规划之蒙特卡洛法(随机取样法))
首先编写M 文件mengte.m 定义目标函数f 和约束向量函数g,程序如下:function [f,g]=mengte(x);%定义目标函数f和约束向量函数g f=x()^+x()^+*x()^+* ...
- UI 自动化遇到的坑
1,ElementNotInteractableException: Message: element not interactable 该解决方法是用xpath定位,然后使用js操作元素,点击之类 ...
- Perl入门(一)Perl的基本类型及运算符
在学习Perl的基础之前,还是希望大家有空去看以下Perl的简介.百度百科 一.Perl的基本类型 Per的基本类型分为两种:数值型和字符串型. 数值型可细分为 整数型.如123. 浮点型.如123. ...
- 2020/6/11 JavaScript高级程序设计 DOM
DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序接口).他描绘了一个层次化的节点树,允许开发人员添加.移除和修改页面的某一部分. 10.1 节点层次 DOM将任何HTML和XML ...
- Haproxy/LVS负载均衡实现+keepalived实现高可用
haproxy+keepalived 集群高可用集群转发 环境介绍 #内核版本 Ubuntu 18.04.4 LTS \n \l 107-Ubuntu SMP Thu Jun 4 11:27:52 U ...
- express高效入门教程(1)
1.hello world 1.1.安装express // 1.进入到自己的项目目录, 我这里是express-demo cd express-demo // 2.初始化项目,生成package.j ...
- MySQL 8.0 主从同步
一.简介 一台服务器充当主数据库服务器,另一台或多台服务器充当从数据库服务器,主服务器中的数据自动复制到从服务器之中.MySQL主从复制的基础是主服务器对数据库修改记录二进制日志,从服务器通过主服务器 ...