基于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里disconnect UDP套接字的方法
Apr 23 Python
python实现数独算法实例
Jun 09 Python
python用reduce和map把字符串转为数字的方法
Dec 19 Python
Django 如何获取前端发送的头文件详解(推荐)
Aug 15 Python
python shell根据ip获取主机名代码示例
Nov 25 Python
Python基于PyGraphics包实现图片截取功能的方法
Dec 21 Python
机器学习经典算法-logistic回归代码详解
Dec 22 Python
使用Django启动命令行及执行脚本的方法
May 29 Python
Python Django 实现简单注册功能过程详解
Jul 29 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
Jul 31 Python
什么是Python变量作用域
Jun 03 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
Jun 29 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 中文处理技巧
2010/04/25 PHP
js常用代码段收集
2011/10/28 Javascript
javascript模块化是什么及其优缺点介绍
2013/09/02 Javascript
js Calender控件使用详解
2015/01/05 Javascript
jQuery源码解读之removeAttr()方法分析
2015/02/20 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
2015/09/14 Javascript
AngularJS使用angular-formly进行表单验证
2015/12/27 Javascript
jquery实现全选、不选、反选的两种方法
2016/09/06 Javascript
JavaScript正则表达式实例详解
2016/10/16 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
2016/12/14 Javascript
svg动画之动态描边效果
2017/02/22 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
2017/08/03 Javascript
js编写简单的聊天室功能
2017/08/17 Javascript
form表单数据封装成json格式并提交给服务器的实现方法
2017/12/14 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
2018/09/19 Javascript
微信小程序tabbar底部导航
2018/11/05 Javascript
ES6 对象的新功能与解构赋值介绍
2019/02/05 Javascript
Vue 自定义指令实现一键 Copy功能
2019/09/16 Javascript
npx create-react-app xxx创建项目报错的解决办法
2020/02/17 Javascript
js实现无缝轮播图
2020/03/09 Javascript
[46:59]完美世界DOTA2联赛PWL S2 GXR vs Ink 第二场 11.19
2020/11/20 DOTA
Python中使用PDB库调试程序
2015/04/05 Python
详解duck typing鸭子类型程序设计与Python的实现示例
2016/06/03 Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
2018/05/10 Python
pandas对dataFrame中某一个列的数据进行处理的方法
2019/07/08 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
2020/03/30 Python
Python StringIO及BytesIO包使用方法解析
2020/06/15 Python
如何手工释放资源
2013/12/15 面试题
自荐信包含哪些内容
2013/10/30 职场文书
实习自我鉴定
2013/12/15 职场文书
汽车运用工程专业毕业生推荐信
2013/12/25 职场文书
超市促销活动方案
2014/03/05 职场文书
聚美优品恶搞广告词
2014/03/14 职场文书
医院护士见习期自我鉴定
2014/09/15 职场文书
单位工作证明书格式
2014/10/04 职场文书
mysql部分操作
2021/04/05 MySQL