基于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
猜你喜欢
- 重读LukeW的《Web Form Design:Filling in the Blanks》感触很深,除佩服LukeW的钻研精神外,更多的
- 关键字:js验证表单大全,用JS控制表单提交 ,javascript提交表单:目录:1:js 字符串长度限制、判断字符长度 、js限制输入、
- 个人觉得还是不要使用中文作为文件名的好,虽然我们用的语言是中文,毕竟中文容易出现问题,兼容性不好。用Dreamweaver制作网页时,如果插
- 阅读上一篇:你是真正的用户体验设计者吗? Ⅰwrite2vin 的 原文路宛兮写的简介:本文介绍了: 1.关于用户体验的几种观点; 2.关于
- urllib模块发起的POST请求案例:爬取百度翻译的翻译结果1.通过浏览器捉包工具,找到POST请求的url针对ajax页面请求的所对应u
- 将Excel中的数据导入到Access中,前提是在Access中的表已经建好。 dim conn dim co
- 用ASP编写网站应用程序时间长了,难免会遇到各式各样的问题,其中关于如何上传文件到服务器恐怕是遇见最多的问题了,尤其是上传图片,比如你想要在
- 一、心知天气API密钥获取首先,访问https://www.seniverse.com,进行登录或者注册操作,然后在控制台上创建一个免费版的
- 本文实例讲述了Python实现基于KNN算法的笔迹识别功能。分享给大家供大家参考,具体如下:需要用到:Numpy库Pandas库手写识别数据
- 今天发现百度图片搜索结果的2级页面改版了,在浏览图片的时候很好用:如图:在浏览图片的时候,右侧的缩略图是这样交互的:因此,在整个浏览图片的过
- 如何制作一个搜索引擎链接程序?多收集几个网站的,然后我们引用它到自己的页面中。接下来,我们要创建页面用于搜索:<center>&
- 本文主要列出来python图形开发GUI库pyqt5的窗体,控件属性与方法如果你想看看python图形开发GUI库pyqt5的基础使用方法可
- 译者按:在iOS HIG已经强大经典了N年之后,Android终于推出了一套比较系统的HIG(大概是为了配合Android 4.0 Ice
- 有一编文章是用JavaScript对XML文件操作来实现无限级联动菜单的,我们可结合ASP来完成对数据库值的读取,然后写入XML文件,再用J
- 今天在编写PHPDoc的导出文档的时候发现一个很郁闷的错误,虽然这个warning不是什么重要错误,但是看着总是很不爽的。于是就去网上找了很
- python微信跳一跳,前言 这是python玩跳一跳系列博文中一篇,主要内容是用颜色识别的方法来进行跳跳小人的定位。颜色识别通过观察,我们
- 意思就是画四条直线,四条直线都不能相交即可。#!/usr/bin/python#coding: UTF-8import turtleimpo
- 修改 index.js 内容,写一些 ES6 的语法:const arr = [ new Promise(() => {}
- 今天在看见了一堆不错的非洲的web 2.0网站的Logo,于大家一起欣赏:非洲web2.0网站的logo大部分和平时看见的web2.0网站l
- 基本原理使用Adodb.Stream读二进制文件然后进行解析,然后返回一数组第一个元素为类型(BMP JPG PNG GIF SWF)第二个