基于Python函数和变量名解析


Posted in Python onJuly 19, 2019

1、Python函数

函数是Python为了代码最大程度的重用和最小化代码冗余而提供的基本程序结构,用于将相关功能打包并参数化

Python中可以创建4种函数:

1)、全局函数:定义在模块中,每个模块都是一个全局作用域,因此,全局作用域的范围仅限于单个程序文

2)、局部函数:嵌套在其它函数中

3)、lambda函数:表达式

4)、方法:与特定数据类型关联的函数表,并且只能与数据类型关联一起使用

Python提供众多内置函数

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

以上这篇基于Python函数和变量名解析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python转码问题的解决方法
Oct 07 Python
简单介绍Python中的struct模块
Apr 28 Python
利用Python获取赶集网招聘信息前篇
Apr 18 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
Aug 30 Python
快速了解Python相对导入
Jan 12 Python
Django使用httpresponse返回用户头像实例代码
Jan 26 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
Mar 13 Python
对Python中class和instance以及self的用法详解
Jun 26 Python
python中bytes和str类型的区别
Oct 21 Python
pandas DataFrame运算的实现
Jun 14 Python
python名片管理系统开发
Jun 18 Python
python 两种方法修改文件的创建时间、修改时间、访问时间
Sep 26 Python
python关于矩阵重复赋值覆盖问题的解决方法
Jul 19 #Python
对Python生成器、装饰器、递归的使用详解
Jul 19 #Python
django中SMTP发送邮件配置详解
Jul 19 #Python
对Python函数设计规范详解
Jul 19 #Python
在django view中给form传入参数的例子
Jul 19 #Python
使用Python制作表情包实现换脸功能
Jul 19 #Python
解决Django一个表单对应多个按钮的问题
Jul 18 #Python
You might like
php计算数组相同值出现次数的代码(array_count_values)
2015/01/20 PHP
微信支付PHP SDK之微信公众号支付代码详解
2015/12/09 PHP
php pdo oracle中文乱码的快速解决方法
2016/05/16 PHP
PHP常用的类封装小结【4个工具类】
2019/06/28 PHP
Using the TextRange Object
2006/10/14 Javascript
jQuery设置div一直在页面顶部显示的方法
2013/10/24 Javascript
JQuery判断HTML元素是否存在的两种解决方法
2013/12/26 Javascript
js实现从中间开始往上下展开网页窗口的方法
2015/03/02 Javascript
jQuery实现分隔条左右拖动功能
2015/11/21 Javascript
MVC Ajax Helper或Jquery异步加载部分视图
2015/11/29 Javascript
javascript字符串函数汇总
2015/12/06 Javascript
js倒计时抢购实例
2015/12/20 Javascript
详述JavaScript实现继承的几种方式(推荐)
2016/03/22 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
2016/12/14 Javascript
JavaScript实现经典排序算法之冒泡排序
2016/12/28 Javascript
老生常谈jquery中detach()和remove()的区别
2017/03/02 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
2017/11/08 jQuery
vue项目中添加单元测试的方法
2018/07/21 Javascript
对vuejs的v-for遍历、v-bind动态改变值、v-if进行判断的实例讲解
2018/08/27 Javascript
VUE实现吸底按钮
2021/03/04 Vue.js
Python中Class类用法实例分析
2015/11/12 Python
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
python并发编程多进程之守护进程原理解析
2019/08/20 Python
python tkinter控件布局项目实例
2019/11/04 Python
python根据字典的键来删除元素的方法
2020/08/16 Python
通过python-pptx模块操作ppt文件的方法
2020/12/26 Python
经济实惠的豪华家具:My-Furniture
2019/03/12 全球购物
JENNIFER BEHR官网:各种耳环和发饰
2020/06/07 全球购物
C#里面可以避免一个类被其他类继承么?如何?
2013/09/26 面试题
Linux内核产生并发的原因
2012/07/13 面试题
中学生在校期间的自我评价分享
2013/11/13 职场文书
岗位职责风险防控
2014/02/18 职场文书
3.12植树节活动总结2014
2014/03/13 职场文书
公证书标准格式
2014/04/10 职场文书
《夹竹桃》教学反思
2016/02/23 职场文书
自从在 IDEA 中用了热部署神器 JRebel 之后,开发效率提升了 10(真棒)
2021/06/26 Java/Android