基于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 相关文章推荐
urllib2自定义opener详解
Feb 07 Python
python抓取网页图片示例(python爬虫)
Apr 27 Python
编写Python的web框架中的Model的教程
Apr 29 Python
python开发之tkinter实现图形随鼠标移动的方法
Nov 11 Python
python中csv文件的若干读写方法小结
Jul 04 Python
详解python分布式进程
Oct 08 Python
解决pycharm remote deployment 配置的问题
Jun 27 Python
Python PyCharm如何进行断点调试
Jul 05 Python
Python获取好友地区分布及好友性别分布情况代码详解
Jul 10 Python
Pandas实现一列数据分隔为两列
May 18 Python
Django 解决开发自定义抛出异常的问题
May 21 Python
详解Python 中的 defaultdict 数据类型
Feb 22 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
mysql时区问题
2008/03/26 PHP
PHP nl2br函数 将换行字符转成 &amp;lt;br&amp;gt;
2009/08/21 PHP
微盾PHP脚本加密专家php解密算法
2020/09/13 PHP
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
2010/10/01 Javascript
Javascript读取cookie函数代码
2010/10/16 Javascript
怎样在JavaScript里写一个swing把数据插入数据库
2012/12/10 Javascript
$.get获取一个文件的内容示例代码
2013/09/11 Javascript
js中AppendChild与insertBefore的用法详细解析
2013/12/16 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/20 Javascript
AngularJS初始化过程分析(引导程序)
2014/12/06 Javascript
JS/Jquery判断对象为空的方法
2015/06/11 Javascript
javascript日期格式化方法小结
2015/12/17 Javascript
IE下JS保存图片的简单实例
2016/07/15 Javascript
jQuery+HTML5实现弹出创意搜索框层
2016/12/29 Javascript
jQuery中DOM节点删除之empty与remove
2017/01/20 Javascript
AngularJS实现根据不同条件显示不同控件
2017/04/20 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
JS实现调用本地摄像头功能示例
2018/05/18 Javascript
详解Axios统一错误处理与后置
2018/09/26 Javascript
vuex的module模块用法示例
2018/11/12 Javascript
解决nuxt 自定义全局方法,全局属性,全局变量的问题
2020/11/05 Javascript
vue3使用vue-count-to组件的实现
2020/12/25 Vue.js
[01:24:51]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第二场
2014/05/26 DOTA
Tornado服务器中绑定域名、虚拟主机的方法
2014/08/22 Python
Python 错误和异常代码详解
2018/01/29 Python
Python实现 版本号对比功能的实例代码
2019/04/18 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
python3 pillow模块实现简单验证码
2019/10/31 Python
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
浅谈HTML5 Web Worker的使用
2018/01/05 HTML / CSS
东南亚地区最大的购物网站Lazada新加坡站点:Lazada.sg
2016/07/17 全球购物
Zooplus罗马尼亚:宠物食品和配件
2019/11/02 全球购物
一道Delphi上机题
2012/06/04 面试题
生物化学研究助理员求职信
2013/10/09 职场文书
企业演讲稿范文
2013/12/28 职场文书
单位考核聘任报告
2015/03/02 职场文书