基于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抓取网页内容示例分享
Feb 24 Python
wxPython窗口中文乱码解决方法
Oct 11 Python
python实现分析apache和nginx日志文件并输出访客ip列表的方法
Apr 04 Python
如何高效使用Python字典的方法详解
Aug 31 Python
详解TensorFlow在windows上安装与简单示例
Mar 05 Python
python验证码识别教程之滑动验证码
Jun 04 Python
PyQt5固定窗口大小的方法
Jun 18 Python
Django多进程滚动日志问题解决方案
Dec 17 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
Feb 17 Python
Python基于network模块制作电影人物关系图
Jun 19 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
May 25 Python
Python 多线程处理任务实例
Nov 07 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网上调查系统
2006/10/09 PHP
PHP和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
2011/07/03 PHP
php木马webshell扫描器代码
2012/01/25 PHP
php生成随机密码自定义函数代码(简单快速)
2014/05/10 PHP
php页面,mysql数据库转utf-8乱码,utf-8编码问题总结
2015/08/27 PHP
php 函数使用可变数量的参数方法
2017/05/02 PHP
Aster vs KG BO3 第一场2.19
2021/03/10 DOTA
javascript 极速 隐藏/显示万行表格列只需 60毫秒
2009/03/28 Javascript
JQuery Ajax 跨域访问的解决方案
2010/03/12 Javascript
js汉字转拼音实现代码
2013/02/06 Javascript
juery框架写的弹窗效果适合新手
2013/11/27 Javascript
JS取得绝对路径的实现代码
2015/01/16 Javascript
jQuery焦点图切换特效代码分享
2015/09/15 Javascript
初探nodeJS
2017/01/24 NodeJs
js实现手机发送验证码功能
2017/03/13 Javascript
JavaScript ES6中const、let与var的对比详解
2017/06/18 Javascript
使用jQuery实现简单的tab框实例
2017/08/22 jQuery
[48:02]Ti4循环赛第三日 VG vs Liquid和NEWBEE vs DK
2014/07/12 DOTA
python模拟新浪微博登陆功能(新浪微博爬虫)
2013/12/24 Python
Python实现简单的代理服务器
2015/07/25 Python
Python中的字典与成员运算符初步探究
2015/10/13 Python
基于python requests库中的代理实例讲解
2018/05/07 Python
详解Django 中是否使用时区的区别
2018/06/14 Python
使用Python实现微信提醒备忘录功能
2018/12/04 Python
python tkinter库实现气泡屏保和锁屏
2019/07/29 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
2020/04/30 Python
Node.js 和 Python之间该选择哪个?
2020/08/05 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
2020/10/15 Python
python 基于opencv 绘制图像轮廓
2020/12/11 Python
佐卡伊官网:中国知名珠宝品牌
2017/02/05 全球购物
花园仓库建筑:Garden Buildings Direct
2018/02/16 全球购物
人民教师求职自荐信
2014/03/12 职场文书
邓小平理论心得体会
2014/09/09 职场文书
2019年12月24日平安夜祝福语集锦
2019/12/24 职场文书
vue实现列表垂直无缝滚动
2022/04/08 Vue.js
详解如何使用Nginx解决跨域问题
2022/05/06 Servers