码迷,mamicode.com
首页 > 编程语言 > 详细

python学习之函数阶段

时间:2017-09-03 20:19:08      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:类型   index   模块   oca   read   a10   调用   同名   实例   

python 3 函数

函数是组织好的,可以被重复利用的,用来实现单一、或者相关联功能的一段代码。

函数能提高应用的模块性和代码的重复利用率,避免相同功能重复书写,节省空间。


定义一个函数

  • 函数代码块以def关键字开头,后接函数名和():
  • 任何传入参数必须放在()中,()中可以定义参数
  • return表示函数结束,选择性地返回一个值(不选择返回值则默认为None)给调用方。

函数调用

需要调用自己定义的函数时,用函数名+()来调用()内可以传递参数


参数传递

  • 位置传参
  • 不定长参数
  • 默认参数
  • 关键字传参

 

命名空间和作用域

A、命名空间分为三种:

1.全局命名空间

2.局部命名空间

3.内置命名空间

三种命名空间的加载值顺序

1.全局命名空间——在运行程序时运行,不在函数内部,从上到下按顺序加载

2.局部命名空间——程序运行中,调用函数才加载

3.内置命名空间——运行程序之前已加载

三种命名空间的取值顺序

在局部调用:局部->全局->内置

在全局调用:全局->局部

B、作用域

作用域就是作用范围,按照生效范围可以分为全局作用域和局部作用域

全局作用域:包含内置名称空间、全局名称空间,在整个文件的任意位置都能被调用,全局有效

局部作用域:局部名称空间,只能在局部范围内生效

globals和locals方法

globals 在函数里后边跟变量可以更改对应全局的变量值


函数的嵌套和作用域链

A、函数的嵌套调用

B、函数的嵌套定义

C、函数的作用域链

D、nonlcoal关键字

# 1.外部必须有这个变量
# 2.在内部函数声明nonlocal变量之前不能再出现同名变量
# 3.内部修改这个变量如果想在外部有这个变量的第一层函数中生效


函数名的本质

函数名本质上就是函数的内存地址

1、可以被引用

2、可以被当作容器类型的元素

3、可以当作函数的参数和返回值(普通变量)


闭包

闭包函数:

内部函数包含对外部作用域而非全剧作用域名字的引用,该内部函数称为闭包函数(两个或两个以上函数的嵌套,里边的函数有外边的函数的变量名)

例如:

def func():
    name = eva
    def inner():
        print(name)

#函数内部定义的函数称为内部函数

由于有了作用域的关系,就不能拿到函数内部的变量和函数了。如果就是想拿怎么办呢?返回!

知道函数内的变量我们要想在函数外部用,可以直接返回这个变量,那么如想在函数外部调用函数内部的函数呢?

是不是直接就把这个函数的名字返回就好了?

这才是闭包函数最常用的用法

闭包函数获取网络应用实例:

from urllib.request import urlopen

def index():
    url = "http://www.xiaohua100.cn/index.html"
    def get():
        return urlopen(url).read()
    return get

xiaohua = index()
content = xiaohua()
print(content)

 

python学习之函数阶段

标签:类型   index   模块   oca   read   a10   调用   同名   实例   

原文地址:http://www.cnblogs.com/Amery313/p/7470652.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!