In [5]:
print(1==1)
print(1==1.0)
print(1=='1')
In [13]:
print([1,2]==[2,1])
print({1,2}=={2,1})
print((1,2)==(2,1))
In [24]:
for i in range(3):
print(i)
print("")
for i in range(0,3):
print(i)
In [25]:
for i in [1,2,3]:
print(i)
In [26]:
for i in {1,2,3}:
print(i)
In [36]:
#读取字典的键值
for i in {1:2,3:4}:
print(i)
print(" ")
for i in {1:2,3:4}.keys():
print({1:2,3:4}[i])
In [37]:
i = 1
while(i == 1):
i = 0
print("1")
In [40]:
#写法
def getName():
print("i am")
return "H"
print(getName())
In [66]:
#空函数
def getName():
None
print(getName())
In [67]:
#异常简介,编译器会报类型错误的异常
abs("a")
In [52]:
try:
abs("a")
except TypeError:
print("typeError")
In [65]:
#使用raise进行参数检测
s = "aa"
def getName(name):
if(type(name) == type("")):
return name
else:
raise TypeError("%s is not a string"%name)
getName([1,2])
In [99]:
#可以在函数里面定义函数
def cook():
print("before")
def cookready():
print("ready")
cookready()
cook()
In [71]:
#参数传递,python中所有传值都是引用传值
def changeName(s):
s = 10
a = "ss"
changeName(a)
print(a)
参数类型
In [108]:
#必要参数,必须在调用的时候带入的参数,也是最常见的一种参数
def getName(x):
print(x)
getName(10)
print("")
def getInfo(name,age):
print(name)
print(age)
getInfo("j",10)
print("")
getInfo(age=20,name="j")
In [80]:
#默认参数
def people(name,age,lifespan=100,has_house=True):
print(name)
print(age)
print(lifespan)
print(has_house)
people("ja",10)
print("")
people("ja",10,20)
print(" ")
people("ja",10,has_house=False)
In [98]:
#当默认参数是一个列表的时候,注意每次调用函数,会记住上次的状态
#因为L被初始化成了一个变量
def getList(L=[]):
L.append("a")
print(L)
getList()
getList()
In [97]:
def getList(L=[1,3]):
L.append("a")
print(L)
getList()
getList()
In [116]:
#为了避免这种情况我们应该将默认参数指向不变参数
#或者在函数内部增加一层判断
def getList(L=[]):
if L==[]:
L=["a"]
print(L)
getList()
getList()
getList([12,34])
In [160]:
#不定长参数,用*表示所有新加入的不确定的参数,可空
def getParam(name,*prop):
print(name)
print(prop) #将参数放置到元组中
for i in prop:
print(i)
getParam("name","j",12,[12,2],(12,3,3),{1,2},{1:2,2:2})
In [161]:
getParam('j')
In [163]:
a = [1,2,3]
getParam("j",a)
In [165]:
getParam("j",key=10)#不能用字典的形式传值
In [171]:
#另一种可变参数,区别是上面将参数放置到一个tuple中,且不能使用字典的形式传值,可以使用list传
#而**的可变参数刚好相反,只能使用字典传参数
def getParamNew(name,**prop):
print(name)
print(prop)
for i in prop:
print(i,prop[i])
In [172]:
getParamNew("j")
In [173]:
a = {1:1,2:2}
getParamNew("j",age=10)
In [174]:
#将上面组合起来
def getInfo(name,age=10,*kw,**prop):
print(name,age,kw,prop)
getInfo("j",20,30,100,prop=10)
In [180]:
getInfo("j",(1,2,3),prop=20,a=30)
In [185]:
getInfo("j",age=20,2,3,prop=30,a=30) #age显式赋值后,后面的赋值出错,具体原因不详
In [196]:
kw = (1,2,3)
prop = {"key1":1,"key2":2}
getInfo("j",2,kw,prop) #如果没有显式的字典赋值,那么字典就会默认为*式的赋值
In [197]:
kw = (1,2,3)
prop = {"key1":1,"key2":2}
getInfo("j",2,kw,key3=3) #如果没有显式的字典赋值,那么字典就会默认为*式的赋值
In [201]:
#*args和**kw是惯用写法,一般使用这种写法,不这么写也可以
In [199]:
#匿名函数又称为lambda表达式
sum = lambda x,y : x+y
print(sum(1,2))
In [3]:
#def 在python中可以算作一条语句,当运行到它的时候,就建立 一个新的函数对象
#并将其赋值给一个变量名,所以def 可以内插到程序内部
if True:
def func():
print("i am func")
func()
In [ ]: