1.内置数据结构小结
【1】可变数据类型or不可变数据类型
可变数据类型:list set dict (是否可以增删该查)
【2】有序数据类型和无序数据类型
有序:str , list ,tuple
无序:数值,bool , set
注意:python2 dict无序;python3 dict有序
一般情况下,有序数据类型可以索引,切片,连接,重复,但是字典除外
2.函数的定义与理解
部分需要缩进的:
if ,elif ,else ,for ,while ,def
例; 圆面积
import math
s1=math.pi*(2**2)
s2=math.pi*(pow(3,2))
print(s1,s2)
如何定义一个函数
例; def print(self ,*arge, sep '', end='\n', file=None )
def 函数名():
函数体
函数里嵌套函数
def fentiao():
print("is fentiao,,,,,,'')
def westos():
print("westos'')
fentiao()
name:定义函数的变量,叫做形参,形参可以任意起名
调用函数时传递的参数称为实参
例:编写一个名为collatz()的函数,他有一个名为number的参数
如果参数是偶数,collatz()打印出number//2
如果参数是奇数,collatz()打印出3*number+1
def collatz(number):
if num %2==0:
print(number//2)
else:
print(3*number+1)
print(number//2 if number%2==0 else 3*number+1 )
collatz(2)
3.函数动态添加成员
def fun ():
print(fun.x)
动态添加
fun.x=3
fun()
动态删除
del fun.x
fun()
4.函数形参之参数类型
参数:形参,实参
形参的分类:位置参数,默认参数,可变参数,关键字参数
位置参数:形参和实参个数必须保持一致
del getInfo(name,age) ##按照位置传参数
print(name,age)
getInfo = (12 , "name")
getInfo=(age=18, name="westos")
getInfo("westos")
默认参数:
def mypow(x,y=2):
print(x**y) ##求x的y次方,y默认值为2
mypow(4)
mypow(4,3)
def mySum(*args) ##用户可以传递任一个数,*args是可变参数,args是元组数据类型
sum=0
for item in args;
sum += item
print(sum)
mySum(1,2,3,4,5,6,76)
关键字参数
def getStuInfo (name, age, **kwargs):
print(name , age)
print(kwargs)
getStuInfo(“westos”,19 ,hobbies=["code", "runing"], gender='female')
参数解包: *变量名 **变量名
对list, tuple, set解包时,只需在变量前加*
nums=[1,2,3,4,5,23,56]
nums=(1,2,3,4,5,23,56)
nums={1,2,3,4,5,23,56}
mySum(*nums)
如果要对字典解包,一个*获取所有key值
d =dict(a=1, b=2)
print(*d)
getStuInfo("westos",12,**d)
res1 =print(“hello")
print("返回值:",res1)
res1 =min([2,4,6])
print("返回值:",res2)
5.函数返回值
返回值:函数的运算的结果,还需要进一步操作时给一个返回值
return用来返回函数执行结果,如果没有返回默认为None(none,null)
默认参数,形参和实参可以不一致
python可以间接返回多个值
一旦遇到return,函数执行结束,后米阿曼的代码不会执行
def mypow(x, y=2)
return x**y ,x+y
print(mypow(4))
a =print( mypow(4,3))
print(a+100)
a,b=mypow(2,2)
print(a,b)
6.变量的作用域
局部便量
在函数内部定义的普通变量,只在函数内部起作用
可变,函数内部改变影响外部变量值
不可变,函数内部改变不会影响外部变量值
全剧变量
a =1
def fun();
a=5
fun()
print(a)
全局变量
a =1
print("outside:",id(a))
def fun ():
a=5
print("inside",id(a))
a = [1,2,3,4]
print("0utside;",id(a))
def fun():
a.append(5)
print("inside",id(a))
print(a)
7.参数数据类型判断
if isinstance(x,int) and isinstance(y, int):
return x+y
else:
print('error')
print(add(1.0,2.3))
参数检测
isinstance(1,int)
True
isinstance(1.0, int)
False
isinstance(1,(int,float))
True
isinstance(True,(int,float))
True
isintance([1,2,3],(int,float))
False
8.函数补充
cmp函数在python和python3中的区别:
python2.7.5(default,Aug 2 2016,04:20:16)
>>>cmp(1,2)
-1
>>>cmp(1,1)
0
>>>cmp(2,1)
1
python3:直接报错,不支持
默认参数在制定时,必须是不可变数据类型
def fun(li=[]):
li.append("END")
return li
print(fun([1,2,3]))
print(fun())
print(fun())
9.参数组合
参数组合是指可以必选参数,默认参数,可变参数和关键字参数一起使用
参数定义的顺序必须是;必选参数,默认参数,可变参数和关键字
10.列表生成
接收k,a,b
s='51 5000 10000'
存储整形的k,a,b
li=[]
for item in s.split():
li.append(int(item))
k,a,b=[int(item) for item in s.split()]
print(k,a,b)
li=[]
for i in range(1,8):
li.append(i**i)
print(li)
print([i**i for i in range(1,8)])
例3*3矩阵转换成一维数组
{
[1,2,3],
[4,5,6]
[7,8,9]
}
li={
[1,2,3],
[4,5,6]
[7,8,9]
}
resLi=[]
for item1 in li:
for item2 in item1:
resLi.append(item2)
print(resLi)
print([item2 for item1 in li for item2 in item1 if item2 %2==0])