基于Python函数和变量名解析
作者:Field_Yang 发布时间:2022-10-26 13:49:56
1、Python函数
函数是Python为了代码最大程度的重用和最小化代码冗余而提供的基本程序结构,用于将相关功能打包并参数化
Python中可以创建4种函数:
1)、全局函数:定义在模块中,每个模块都是一个全局作用域,因此,全局作用域的范围仅限于单个程序文
2)、局部函数:嵌套在其它函数中
3)、lambda函数:表达式
4)、方法:与特定数据类型关联的函数表,并且只能与数据类型关联一起使用
Python提供众多内置函数
Python创建、改变、查找变量名都是在名称空间中进行,在代码中变量名被复制的位置决定了其能被访问到的范围
Python函数执行环境
如图,函数可以通过多种方法获得输入以及产生输出:
创建函数,语法格式:
def funcName(arg1,arg2, ...):
suite
语法说明:
1)、def是一个可执行语句,可以出现在任何能够使用语句的地方,甚至可以嵌套在其它语句中,例如if或while语句。
2)、def创建一个对象并将其赋值给一个变量名(即函数名)
3)、return用于返回结果对象,为可选参数,无return语句时函数自动返回none对象。返回对个值时,使用逗号隔开,并组合称一个元组对象返回
4)、def语句运行之后,可以在程序中使用函数后附加括号进行调用,每次对函数的调用都会创建一个新的本地作用域,赋值的变量除非声明为全局变量,否则均为本地变量
5)、所有的变量名都可以归纳为本地、全局或内置的(由__builtin__模块提供)
python函数用法示例
例1:交互式模式下创建并调用函数
In [1]: def printname():
...: raw_input('Please Inputyour name:')
...:
In [2]: printname()
Please Input your name:Fieldyang
例2:编辑test.py,测试全局变量和函数内本地变量
[root@test 0527]# vim test.py
#!/usr/bin/python27
x = 27
def f1():
x= 52
print x
f1()
print x
[root@test 0527]# chmod +x test.py
[root@test 0527]# ./test.py
52 #调用函数产生的输出,函数内变量
27 #print产生的输出,本地变量
例3:编辑test.py,测试全局变量和函数内变量的作用域
[root@test 0527]# vim test.py
#!/usr/bin/python27
x = 27
def f1():
y= 52
print "def y = %d,global x = %d" % (y,x)
f1()
print "global x = %s." %x
print y
[root@test 0527]# ./test.py
def y = 52,global x = 27
global x = 27.
Traceback (most recent call last):
File "./test.py", line 9, in <module>
print y
NameError: name 'y' is not defined
#函数内部可以使用全局变量,局部同名变量不影响全局变量,并且全局变量无定义时无法自行使用函数内同名变量。
#函数内部赋值的变量可以使用global声明为全局变量,则全局中均会调用该变量值。
例4:编辑test.py,定义全局变量
[root@test 0527]# vim test.py
#!/usr/bin/python27
x = 27
y = 66
#本地变量,函数内部声明“global y”后该参数不会被调用
def f1():
global y
y= 52
print "global y = %d,global x = %d" % (y,x)
f1()
print "global x = %s." %x
print "global y = %s." %y
[root@test 0527]# ./test.py
global y = 52,global x = 27
global x = 27.
global y = 52.
2、变量名解析
1)、LEGB原则:
Local-->Enclosing functionlocals-->Global-->Built-in
变量名引用分三个作用域进行
首先是本地、之后是函数内、接着是全局、最后是内置,作用域越小,优先级越高
2)、变量名解析示例
例1:函数嵌套的使用
[root@test 0527]# vim test2.py
#!/usr/bin/python27
#
z = "From global :"
m = 666
def f1():
x= "From function f1 :"
y= 222
print "%s y = %d" % (x,y)
print "%s m = %d" % (z,m)
def f2():
x = "From function f2 :"
print "%s y = %d" % (x,y)
f2()
f1()
print "%s m = %d" % (z,m)
[root@test 0527]# chmod +x test2.py
[root@test 0527]# ./test2.py
From function f1 : y = 222
From global : m = 666
From function f2 : y = 222
From global : m = 666
来源:https://blog.csdn.net/Field_Yang/article/details/80587485


猜你喜欢
- 1.官网下载:https://dev.mysql.com/downloads/找到Mysql Community Server 点击点击do
- JavaScript就其本质是函数式编程语言,是Lisp的后代,同时又加入了一下面向对象编程的元素,放弃了一些难懂的函数式语言的元素。 函数
- 如下所示:temp1 = [[] for i in range(10)]temp2 = [temp1 for i in range(20)]
- 使用auto.js实现自动化每日打卡疫情原因,需要在家每天定时打卡,每天刚起床的时候避免不了出现注意力不集中或者是看不到app,点不到按钮什
- 我就废话不多说啦!dpi=1 600×400dpi=21200×800dpi=31800×1200........dpi=21(21×600
- Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理
- 作业备份,不是备份数据库,是备份作业。 我的方法是把作业导出成文件备份起来,因为当你服务器维护的多了的时候很多你的作业 就很成问题,很麻烦。
- 本文实例为大家分享了python爬取网易云音乐评论的具体代码,供大家参考,具体内容如下import requestsimport bs4im
- 1、什么是水仙花数?水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digit
- 在将数据库从MSSQL迁移到MySQL的过程中,基于业务逻辑的要求,需要在MySQL的自增列插入0值。在MSSQL中是这样完成的: stri
- 无聊刷日剧,看到签到断了好久,简单写了个脚本,通过模拟抓包的方式实现1、先登录到字幕组网站获取token2、用获取到的token登录到人人活
-   MySQL行转列,对经常处理数据的同学们来说,一定是不陌生的,甚至是印象深刻,因为它大概率困扰过你,
- 需求:给定一个数组和一个正整数,要求把数组分割成多个正整数大小的数组,如果不够分,则最后一个数组分到剩余的所有元素。示例1:数组:[1, 2
- up.htm'::::::: 此程序属扬子原创 ::::::::::::::::::':::::: 在sql2000,200
- 1 准备工作1.1 环境搭建1.1.1 安装python3.6python安装官网1.1.2 安装django2.2pip install
- 1. 引言在某些场景下,我们不仅需要进行实时人脸检测追踪,还要进行再加工;这里进行摄像头实时人脸检测,并对于实时检测的人脸进行初步提取;单个
- 之前一直有过疑惑为什么MySQL数据库存timestamp可以无视时区问题.在业务中也是一直使用Laravel框架,内置的Migration
- 1.python 和 pytorch的数据类型区别在PyTorch中无法展示字符串,因此表达字符串,需要将其转换成编码的类型,比如one_h
- Tensorboard:如何更直观的观察数据在神经网络中的变化,或是已经构建的神经网络的结构。上一篇文章说到,可以使用matplotlib第
- ASPJPEG组件是Persits出品的共享软件,试用期为30天,您可以在这里下载:http://www.persits.com/aspjp