从零开始的 python
引用官方库函数/常量之类的
from __ import __
自定义函数
def ___():
return
在交互式环境下,要多打一行空行
注:在 def 的参数可以直接
def exp(n,d=10)
如果执行 exp(23333) ,d 就默认为 10
如果是 exp(2333,15) ,d 仍然为 15
编译命令
python -i
表示执行交互式,会先运行一次程序,然后开始交互
python -m doctest xxx.py
表示文档差错(似乎是一种还可以的Debug方式?)
python -m doctest -v ex.py
详细版
使用方式为以 >>> 在注释中打出 交互命令 和 期望结果 ,然后如果有不匹配就会报错。
def divide_exact(n,d):
"""
return sth about deivde
>>> q, r= divide_exact(2013,10)
>>> q
201
>>> r
2
"""
return n//d, n%d
q, r= divide_exact(2013,10)
#print(q,r)
条件语句
def abs(a):
if a < 0:
return -a
elif a > 0:
return a
else if = elif (仍然有 else 的用法,但似乎不能用 else if?)
PS: 实参会在计算后再传递
python 有从左到右计算的特性(似乎叫短路?)
eg:
return x>0 and sqrt(x)>10
如果给一个 x<0 ,那么也不会报错,以为在 x>0 时就已经返回 false 了。
循环
while i<3:
i = i+1
total = total + i
assert
就是断言
assert conditon,message
若 condition 为假,就print message
def 嵌套
def make_adder(n):
def adder (k):
return k+n
return adder
这个挺有意思的,return 了一个函数,相当于你可以为直接定义一个函数,like:
add_three = make_adder(3)
就喜提 add_three()
PS:
python 的函数似乎没有前后声明的要求,比如:
def f(x,y):
return g(x)
def g(a):
return a+233
result = f(1,2)
print(result)
这个代码就可以正常运行
嵌套还可以这么玩:
def compose1(f ,g):
def h(x):
return f(g(x))
return h
def f1 (x):
return x-1
def p1 (x):
return x*2
us = compose1(f1 , p1)
a=us(3)
print(a)
有意思捏
lambda
S = lambda x: x*x
可以用来定义简易函数
这样的 S 就是 S(x) 了
还可以
map(lambda x: x*x,[y for y in range(10)])
简洁