基于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中的异常处理简明介绍
Apr 13 Python
python中 logging的使用详解
Oct 25 Python
TensorFlow实现随机训练和批量训练的方法
Apr 28 Python
python 统计一个列表当中的每一个元素出现了多少次的方法
Nov 14 Python
Django框架之登录后自定义跳转页面的实现方法
Jul 18 Python
django rest framework 实现用户登录认证详解
Jul 29 Python
python中用logging实现日志滚动和过期日志删除功能
Aug 20 Python
TensorFLow 数学运算的示例代码
Apr 21 Python
Python字符串split及rsplit方法原理详解
Jun 29 Python
Python加速程序运行的方法
Jul 29 Python
在pyCharm中下载第三方库的方法
Apr 18 Python
Django集成富文本编辑器summernote的实现步骤
May 31 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
Session的工作方式
2006/10/09 PHP
建立文件交换功能的脚本(一)
2006/10/09 PHP
php实现自动获取生成文章主题关键词功能的深入分析
2013/06/03 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
2016/10/20 PHP
如何优雅的使用 laravel 的 validator验证方法
2018/11/11 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
2019/05/06 PHP
jquery选择器排除某个DOM元素的方法(实例演示)
2014/04/25 Javascript
node.js中的events.EventEmitter.listenerCount方法使用说明
2014/12/08 Javascript
JQuery中Bind()事件用法分析
2015/05/05 Javascript
PhantomJS快速入门教程(服务器端的 JavaScript API 的 WebKit)
2015/08/06 Javascript
跟我学习javascript的异步脚本加载
2015/11/20 Javascript
Boostrap模态窗口的学习小结
2016/03/28 Javascript
jQuery EasyUI Pagination实现分页的常用方法
2016/05/21 Javascript
jQuery焦点图轮播效果实现方法
2016/12/19 Javascript
微信小程序实现图片轮播及文件上传
2017/04/07 Javascript
AngularJS使用ng-repeat遍历二维数组元素的方法详解
2017/11/11 Javascript
在vue-cli3.0 中使用预处理器 (Sass/Less/Stylus) 配置全局变量操作
2020/08/10 Javascript
vue 中使用print.js导出pdf操作
2020/11/13 Javascript
javascript中导出与导入实现模块化管理教程
2020/12/03 Javascript
js 执行上下文和作用域的相关总结
2021/02/08 Javascript
[02:12]DOTA2英雄基础教程 变体精灵
2013/12/16 DOTA
[01:03:13]VG vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python中使用PIL库实现图片高斯模糊实例
2015/02/08 Python
Django 生成登陆验证码代码分享
2017/12/12 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
2018/10/11 Python
Python应用领域和就业形势分析总结
2019/05/14 Python
利用SVG和CSS3来实现一个炫酷的边框动画
2015/07/22 HTML / CSS
美国瑜伽品牌:Gaiam
2017/10/31 全球购物
苹果台湾官网:Apple台湾
2019/01/05 全球购物
世嘉游戏英国官方商店:SEGA Shop UK
2019/09/20 全球购物
新加坡一家在线男士皮具品牌:Faire Leather Co.
2019/12/01 全球购物
面向对象概念面试题(.NET)
2016/11/04 面试题
新年晚会主持词
2014/03/24 职场文书
文明寝室标语
2014/06/13 职场文书
教师四风问题整改措施
2014/09/25 职场文书