基于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的绘图工具matplotlib使用实例
Jul 03 Python
详解Python中的循环语句的用法
Apr 09 Python
Python3中的真除和Floor除法用法分析
Mar 16 Python
python脚本实现xls(xlsx)转成csv
Apr 10 Python
轻松掌握python设计模式之策略模式
Nov 18 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
Oct 16 Python
Python-OpenCV基本操作方法详解
Apr 02 Python
python excel使用xlutils类库实现追加写功能的方法
May 02 Python
win10下python3.8的PIL库安装过程
Jun 08 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
Nov 12 Python
Pycharm安装Qt Design快捷工具的详细教程
Nov 18 Python
python中xlrd模块的使用详解
Feb 01 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
第三节 定义一个类 [3]
2006/10/09 PHP
php对图像的各种处理函数代码小结
2013/07/08 PHP
Zend Framework基于Command命令行建立ZF项目的方法
2017/02/18 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
html超链接打开窗口大小的方法
2013/03/05 Javascript
关于div自适应高度/左右高度自适应一致的js代码
2013/03/22 Javascript
如何使用jquery动态加载js,css文件实现代码
2013/04/03 Javascript
JS获取html对象的几种方式介绍
2013/12/05 Javascript
使用Node.js为其他程序编写扩展的基本方法
2015/06/23 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
2015/06/23 Javascript
Easyui 之 Treegrid 笔记
2016/04/29 Javascript
详解jQuery中ajax.load()方法
2017/01/25 Javascript
JS获取数组中出现次数最多及第二多元素的方法
2017/10/27 Javascript
JavaScript学习笔记之基于定时器实现图片无缝滚动功能详解
2019/01/09 Javascript
Vue动态组件与异步组件实例详解
2019/02/23 Javascript
详解关于html,css,js三者的加载顺序问题
2019/04/10 Javascript
解决layui checkbox 提交多个值的问题
2019/09/02 Javascript
JavaScript实现移动端弹窗后禁止滚动
2020/05/25 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
2020/11/06 Javascript
Python实现基本数据结构中队列的操作方法示例
2017/12/04 Python
Python单元测试简单示例
2018/07/03 Python
Linux下python3.7.0安装教程
2018/07/30 Python
Python PIL读取的图像发生自动旋转的实现方法
2019/07/05 Python
python高斯分布概率密度函数的使用详解
2019/07/10 Python
python多线程共享变量的使用和效率方法
2019/07/16 Python
浅析Windows 嵌入python解释器的过程
2019/07/26 Python
详解Pycharm出现out of memory的终极解决方法
2020/03/03 Python
python 读txt文件,按‘,’分割每行数据操作
2020/07/05 Python
python speech模块的使用方法
2020/09/09 Python
全面解析CSS Media媒体查询使用操作(推荐)
2017/08/15 HTML / CSS
ECCO爱步加拿大官网:北欧丹麦鞋履及皮具品牌
2017/07/08 全球购物
荷兰在线钓鱼商店:Raven
2019/06/26 全球购物
荷兰家电销售网站:Welhof
2020/12/08 全球购物
室内设计专业毕业生求职信
2014/05/02 职场文书
电影雷锋观后感
2015/06/10 职场文书
胡桃夹子观后感
2015/06/11 职场文书