【python】模块?包?库?以及作用域
2017-04-21 本文已影响67人
某米狼

通俗讲,
py文件就是模块
含有__init__.py文件的文件夹就是包
库指供用户使用的完成一定功能的代码集合在python中是包和模块的形式。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
' a test module ' #任何模块代码的第一个字符串都被视为模块的文档注释
__author__ = 'Milang' #别人就可以瞻仰你的大名
import sys #导入模块,就有了变量sys指向该模块,便于访问其中的所有功能
...
if __name__=='__main__':
test()
在命令行运行该模块文件时,Python解释器把一个特殊变量__name__
置为__main__
,所以用命令行运行时,会运行test(),而在其他地方导入该模块时,则不会。
作用域
考考你~猜猜各题执行结果会是什么
- 块级作用域
if 1 == 1:
name = "lzl"
print(name)
for i in range(10):
age = i
print(age)
- 局部作用域
def func():
name = "lzl"
print(name)
def func():
name = "lzl"
func() #执行函数
print(name)
- 作用域链
name = "lzl"
def f1():
name = "Eric"
def f2():
name = "Snor"
print(name)
f2()
f1()
- 终极版作用域
name = "lzl"
def f1():
print(name
def f2():
name = "eric"
f1()
f2()
name = "lzl"
def f1():
print(name)
def f2():
name = "eric"
return f1
ret = f2()
ret()
name = "lzl"
def f1():
print(name)
def f2():
name = "eric"
f1()
f2()
- 新浪面试题
li = [lambda :x for x in range(10)]
第一个元素的返回值为多少?
答案在底部
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
详细答案点我
1: lzl 9
2.1 2.2: not defined
3: Snor
4.1 4.2 4.3: lzl
5: 9