PYTHON第十天笔记

补充知识点:

1、
if xxx:
...
if后面接的内容总是会转化成bool值
2、
三元运算:
a = 10
b = 5
c = a if a > b else b 
//变量 = if条件成立的结果或else条件不成立的结果 if 条件成立 else if条件不成立的结果
print(c)

 

等同:
a = 10
b = 5
if a > b:
  c = a
else:
  c = b
print(c)

 

函数进阶:

1、其他:
函数里面返回结果用return,也可以用print,如果只是单纯的实现某功能不需要返回可以什么都不加。
函数外面接收用print。
2、命名空间(名称空间):
(1).作用范围:
内置命名空间 > 全局命名空间 > 局部命名空间
(2).顺序:
(1)启动python,内置命名空间
(2)加载全局命名空间里的名字
(3)调用函数的时候,从上到下去加载
示例:
a = 0
b = 1
print(a)
def my_max():
    c = 5
    def aaa():
    d = 2
    print(a)
print(000)
print(000)
print(000)
my_max()

 

 
(3).命名空间变量:
含义:
内置变量:
python程序自带的,启动即有。
全局变量:
除了函数内部的名字之外,写的代码里面所有的名字。
局部变量:
函数内部的
注意:
在局部内可以使用全局命名空间的名字,但是全局中不可以使用局部命名空间中的名字。
局部变量使用:自己有定义的时候就用自己的,自己没有时就用上层局部的,...,最外层局部没有的就用全局的。
(4).作用域:
内置命名空间:在任意地方都可以用
全局命名空间:在写的代码里任意地方
局部命名空间:只能在自己的函数内使用
示例:
(1).
globals()全局、locals()局部,可用print查看!
注释:
//global 修改全局命名空间里的变量值
//nonlocal 只修改局部命名空间里的,从内部往外找到第一个对应的变量名
a = 0
def demo1():
global a
a = 2
print(a)
demo1()
print(a)
(2).
a = 0
def demo1():
a = 1
def demo2():
def demo3():
global a
a = '小神仙'
print('demo3:',a)
demo3()
print('demo2:',a)
demo2()
print('demo1:',a)
demo1()
print(a)
3、函数名的奥秘:
示例:
def alex():
print(123)
def func():
return alex
alex()
ret = func()
print(ret())
(1).函数的名字,可以当作变量使用,函数名第一类对象的概念
(2).函数名首先是一个函数的内存地址
(3).可以赋值,可以作为其他容器类型(如列表、元组...)的元素
(4).可以作为函数的参数,返回值
示例:
...
...
a = alex
l = [alex]
print(alex)
print(l[0]) //l[0] == alex
l[0]()
print(alex)
print(a)
4、闭包
示例:
def func():
name = 'egon'
def inner():
print(name)
return inner
//print(inner.__closure__) 如果有内存地址则表示有闭包
i = func()
i()
#inner = func()
#inner()
(1).含义:内部函数引入了外部函数的变量,内部的函数就叫做闭包。
(2).闭包的作用:装饰器是闭包的一种应用。
示例:
def func():
name = 'egon'
def inner():
print(name)
return inner
a = func()
a()
//从网页上爬取信息
from urllib.request import urlopen
def get_url():
url = 'http://www.cnblogs.com/Eva-J/articles/7156261.html'
def inner():
ret = urlopen(url).read()
return ret
return inner
get_web = get_url()
res = get_web()
print(res)
 
图片下载:
 
 
 
 
 
 
 
 

posted @ 2017-08-30 20:16  主啊~  阅读(66)  评论(0编辑  收藏  举报