python学习笔记

  • 数据类型是否可变?
    不可变类型:如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。
    可变类型:如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响

  • str.partition(’’)
    str.partition(’’),可以将字符串以str1进行分隔成三个部分:str1前,str1,str1后

str1 = 'hello world hello china'
print(str1.partition('world'))	#('hello ', 'world', ' hello china')
  • 函数参数默认值
    默认值必须放在最右边
def animal(pet2,pet1='dog'):            #默认值必须放在最右边
    print('%s叫汪汪,%s叫喵喵'%(pet1,pet2))
animal('cat')
  • 函数不定长参数
    不确定给多少参数时,可用不定长参数
    加了星号(*)的变量名会存放所有未命名的变量参数(元组)。加了(**)会存放所有命名的变量参数(字典)
    注意点:参数arg、*args、**kwargs三个参数的位置必须是一定的。必须是(arg,*args,**kwargs)这个顺序,否则程序会报错
def test(a,b,c,*tup,**dict):
    print(a)		#1
    print(b)		#2
    print(c)		#3
    print(tup)		#('a1', 'a2', 'a3')
    print(dict)		#{'name': 'joe', 'age': 18}
test(1,2,3,'a1','a2','a3',name='joe',age=18)
输出为:
1
2
3
('a1', 'a2', 'a3')
{'name': 'joe', 'age': 18}
  • 迭代器
    使用了yield的函数称为生成器,返回iterable迭代器
    yield可返回多次(经过next()调用多次调用),return只返回一次
    在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回yield的值,并在下一次从当前位置继续运行
    迭代器有两个基本方法:iter()next()
    字符串、列表、元组、集和都可创建迭代器
list=[1,2,3,4]
it = iter(list)   	 # 创建迭代器对象
print (next(it)) 	 # 输出迭代器的下一个元素 1
print (next(it))	 #2
def Xun(max):
    n=0
    b=1
    while n<max:
        yield b
        b+=1
        n+=1
s=Xun(5)
print(next(s))    #1
print(next(s))	  #2
a=[1,2,3,4,5,6,7]
b=iter(a)
print(next(b))
c=[]
for i in b:
    print(i,'aa')
    c.append((next(b)-i))
print(c)

输出结果为:

1
2 aa
4 aa
6 aa
[1, 1, 1]

send(),重新给yield赋值

def myGen():
    val1=yield 1
    print('val1=',val1)
    val2=yield 9
    print('val1=',val2)
gen=myGen()
print(next(gen))	#1
print(gen.send(7))	#val1=7,	yield 1返回之后,重新给val1赋值
					#9
# print(next(gen))	
def f():
    print('start')
    a = yield 1
    print(a)
    print('middle....')
    b = yield 2  # 2这个值只是迭代值,调用next时候返回的值
    print(b)
    print('next')
    c = yield 3
    print(c)

a = f()
print(next(a))
print(next(a))
print(next(a))
# print(a.send('msg'))
# print(a.send('msg1'))
# print(next(a))

  • self不是python的关键字,可以用其他标识符代替

    类的多继承:
    class Animal(A,B,C) 如果继承的父类中有相同的方法名,而在子类中使用时未指定,python将从左至右查找父类中是否包含方法。

    静态方法,装饰器@staticmethod
    无需实例化即可访问的方法
    参数不能传入self,如test()

  • end=’’,不换行
    print(‘asd’,end=’’) #去掉换行符 字符串后面加上 end=’’

  • 正则表达式re
    参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值