基于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之yield表达式学习
Sep 02 Python
Python字符串、元组、列表、字典互相转换的方法
Jan 23 Python
详解Python3中ceil()函数用法
Feb 19 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
Feb 22 Python
python中的句柄操作的方法示例
Jun 20 Python
Python画图实现同一结点多个柱状图的示例
Jul 07 Python
Spring Cloud Feign高级应用实例详解
Dec 10 Python
python判断两个序列的成员是否一样的实例代码
Mar 01 Python
使用pygame编写Flappy bird小游戏
Mar 14 Python
Python学习开发之图形用户界面详解
Aug 23 Python
Python可变集合和不可变集合的构造方法大全
Dec 06 Python
分享python函数常见关键字
Apr 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 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
windows下升级PHP到5.3.3的过程及注意事项
2010/10/12 PHP
php设计模式 Composite (组合模式)
2011/06/26 PHP
10个php函数实用却不常见
2015/10/13 PHP
教你php如何实现验证码
2016/01/20 PHP
php 获取文件行数的方法总结
2016/10/11 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
php+mysql开发中的经验与常识小结
2019/03/25 PHP
var与Javascript变量隐式声明
2009/09/17 Javascript
JavaScript操作Oracle数据库示例
2015/03/06 Javascript
如何使用jquery修改css中带有!important的样式属性
2016/04/28 Javascript
jQuery实现倒计时重新发送短信验证码功能示例
2017/01/12 Javascript
Vue2 使用 Echarts 创建图表实例代码
2017/05/18 Javascript
基于express中路由规则及获取请求参数的方法
2018/03/12 Javascript
最后说说Vue2 SSR 的 Cookies 问题
2018/05/25 Javascript
微信小程序实现上传图片裁剪图片过程解析
2019/08/22 Javascript
解决layUI的页面显示不全的问题
2019/09/20 Javascript
vue.js实现二级菜单效果
2019/10/19 Javascript
微信小程序实现弹框效果
2020/05/26 Javascript
Vue-cli打包后如何本地查看的操作
2020/09/02 Javascript
讲解Python中if语句的嵌套用法
2015/05/14 Python
基于进程内通讯的python聊天室实现方法
2015/06/28 Python
对python多线程中Lock()与RLock()锁详解
2019/01/11 Python
在Python中,不用while和for循环遍历列表的实例
2019/02/20 Python
Appium+python自动化怎么查看程序所占端口号和IP
2019/06/14 Python
Python计算矩阵的和积的实例详解
2020/09/10 Python
html5基础标签(html5视频标签 html5新标签用法)
2013/12/30 HTML / CSS
国际化的太阳镜及太阳镜配件零售商:Sunglass Hut
2016/07/26 全球购物
摩顿布朗英国官方网上商店:奢华沐浴、身体和头发护理
2016/10/29 全球购物
测试时代收集的软件测试面试题
2013/09/25 面试题
Servlet的生命周期
2013/08/25 面试题
教育实习生的自我评价分享
2013/11/21 职场文书
给分销商的致歉信
2014/01/14 职场文书
大学生求职信
2014/06/17 职场文书
学术会议领导致辞
2015/07/29 职场文书
纯html+css实现打字效果
2021/08/02 HTML / CSS