python第十课

#函数进阶
# a=1
# def func():
# print(a)
# func()
#命名空间和作用域

#命名空间有三种
#内置命名空间--python解释器
#就是python解释器一启动就可以使用的名字存储在内置命名空间中
#内置的名字在启动解释器的时侯被加载进内存里
#全局命名空间--我们写的代码但不是函数中的代码
#是在程序从上到下被执行的过程中依次加载进内存的
#放置了我们设置的所有变量名和函数名
#局部命名空间--函数
#就是函数内部定义的名字
#当调用函数的时侯,才会产生这个名称空间,随着函数执行的结束,这个命名空间就又消失了

#在局部:可以使用全局,内置命名空间中的名字
#在全局:可以使用内置命名空间中的名字,但是不能用局部中使用
#在内置:不能使用局部和全局的名字

# def max(l):
# print('in max func')
#
# print(max([1,2,3]))
#在正常情况下,直接使用内置的名字
#当我们在全局定义了和内置名字空间中同名的名字时,会使用全局的名字
#当我自已有的时侯,我就不找我上级要了
#如果自已没有,就找上一级要,上一级没有再找上一级,如果内置的名字空间都没有,就报错
#多个函数应该拥有多个独立的局部名字空间,不互相共享
# def max():
# print('in max func')

# def func():
# # input=1
# print(input)

#func -->函数的内存地址
#函数名() 函数的调用
#函数的内存地址() 函数的调用

#作用域两种
#全局作用域--作用在全局--内置和全局中的名字都属于全局作用域--globals()
#局部作用域--作用在局部--函数(局部名字空间中的名字属于局部作用域)--locals()
# a=1
# def func():
# global a
# a = 2
# func()
# print(a)

#对于不可变数据类型 在局部可是查看全局作用域中的变量
#但是不能直接修改
#如果想要修改,需要要程序的一开始添加global声明
#如果一个局部(函数)内声明了一个global变量,那么这个变量在局部的所有操作将对全局的变时有效
# a=1
# b=2
# def func():
# x='aaa'
# y='bbb'
# print(locals())
# # func()
# print(globals())
# print(locals()) #本地的
#globals 永远打印全局名字
#locals 输出什么 根据locals所在的位置
#
# def max(a,b):
# return a if a>b else b
#
# def the_max(x,y,z):#函数的嵌套调用
# c=max(x,y)
# return max(c,z)
# print(the_max(1,2,3))

#函数的嵌套定义
#内部函数可以使用外部函数的变量
# a=1
# def outer():
# a=1
# def inner():
# b=2
# print(a)
# print('inner')
# def innert2():
# #global a #声明了一个全局变量
# nonlocal a #声明了一个上面第一层局部变量
# a += 1 #不可变数据类型的修改
# print('innert2')
# innert2()
# print('##a## : ',a)
# inner()
# print('**a** : ',a)
# outer()
# print('全局 : ',a )
#nonlocal 只能用于局部变量 找上层中离当前函数最近一层的局部变量
#声明了nonlocal的内部函数的变量修改会影响到离当前最过一层的局部变量
#对全局无效
#对局部也只是对最近的一层有影响
# a=0
# def outer():
# #a=1
# def innter():
# #a = 2
# def inner2():
# nonlocal a
# print(a)
# inner2()
# innter()
# outer()

# def func():
# print(123)

#func() #函数名就是内存地址
# func2 = func #函数名可以赋值

#闭包:嵌套函数,内部函数调用外部函数的变量
# def outer():
# a=1
# def inner():
# print(a)
# print(inner.__closure__)
# outer()

# def outer():
# a=1
# def inner():
# print(a)
# return inner
# inn = outer()
# inn()

#import urllib #模块
from urllib.request import urlopen
# ret=urlopen('http://www.xiaohua100.cn').read()
# print(ret)

def get_url():
ret=urlopen('http://www.xiaohua100.cn').read()
print(ret)

get_url()
原文地址:https://www.cnblogs.com/huangjianfeng/p/11285796.html