在python中,函数名加(),表示返回的是一个函数的结果,不加括号表示的是对函数的调用。
命名空间
作用域
名称 | 含义 |
---|---|
locals | 是函数内的名字空间,包括局部变量和形参 |
enlosing | 外部嵌套函数的名字空间 |
globals | 全局变量,是表示在单个文件内是全局的变量,定义所在模块的名字空间 |
builtins | 内置作用域表示在整个python程序中都含有的变量 |
· 变量查找规则LEGE的顺序对变量进行查找
向函数内传入参数时,*表示这个函数是一个可变参数(表示不确定有几个数据)
* * 表示是一个字典参数
高阶编程
- map
- 他接收一个函数f和一个list
- 并通过把函数f依次作用在list的每个元素上,得到一个新list并返回。
- filter
- filter()函数接收一个函数f和一个list
- 这个函数f的作用是对每个元素进行判断,返回True或False
- 根据判断结果过滤掉不符合条件的元素,返回由符合元素组成的新list
- reduce
- 一个函数f,一个list,但行为和map()不同
- reduce()传入的函数f必须接收两个参数
- reduce()对list的每个元素反复调用函数f,并返回最终结果值。
format函数
通过位置
print '{0},{1}'.format('feifei',20) 结果 feifei,20 print '{1},{0}'.format('feifei',20) 结果 20,feifei print '{1},{0},{1}'.format('feifei',20) 结果 20, feifei, 20
通过关键字参数
print '{name},{age}'.format(age=18,name='feifei') 结果 feifei,18 class Person: def __init__(self,name,age): self.name = name self.age = age def __str__(self): return 'This guy is {self.name}, is {self.age} old'.format(self=self) print str(Person('feifei',18)
通过映射 list
a_list = ['feifei', 20, 'china'] b_list = ['jingjing', 23,'american'] print 'my name is {0[0]},from {1[2]},age is {0[1]}'.format(a_list,b_list)
通过映射 dict
a_dict = {'name':'feifei', 'age':24, 'province':'henan'} print 'my name is {name}, age is {age},from {province}'.format(**a_dict)
填充与对齐
print '{:>8}'.format('189') # 189 print '{:0>8}'.format('189') #00000189 print '{:a>8}'.format('189') #aaaaa189
精度与类型
保留两位小数
print '{:.2f}'.format(321.33356) # 321.33
用来做金额的千分隔符
print '{:,}'.format(321333561344) # 321,333,561,344
用来做进制之间的转换
print '{:b}'.format(18) #二进制 10010 print '{:d}'.format(18) #十进制 18 print '{:o}'.format(18) #八进制 22 print '{:x}'.format(18) #十六进制12
reload函数 重加载函数
_ all _ 决定在import *的时候导入的是什么
_ all _ 变量在 _ init _ .py 文件中
_ name _ 与 _ main _
- 文件作为模块进行导入,并独立程序运行
- 每个模块的默认属性: _ name _
- 这个值是原始文件所在的模块, python默认设置 ” _ main _”
- 如果是导入到其他文件中,则 _ name _ 就是模块的名称
运用
if __name__ == '__main__':
main()
表示当文件是在不被调用的情况下执行时运行main()函数
sys.argv[]的含义
- sys.argv[] 应该大彻大悟了吧。Sys.argv[ ]其实就是一个列表,里边的项为用户输入的参数,关键就是要明白这参数是从程序外部输入的,而非代码本身的什么地方,要想看到它的效果就应该将程序保存了,从外部来运行程序并给出参数。
.func_defaults
这个方法是用来返回某一函数的默认值的方法,例suquare.func_defaults
间接调用函数
函数自身存储在内存块中,可以跨程序自由传递和间接调用
间接调用 — 可以把函数对象赋值给其他的名称并且通过引用来调用
def func_a():
a = 10
def func_b():
b = 10
print b
return func_b
x = func_a()
print x
print x()
x就是func_a()函数返回的值,即返回的是func_b函数
那么 x() 就是执行的func_b函数 ,那么结果就是 10
一个函数加上括号就是调用它的意思
但是不能直接去调用func_b(),因为它是一个局部的函数