【oldboy】博客是必须写的哦-第二阶段
2017-12-25 21:28
211 查看
1)函数参数
#!/usr/bin/env python #-*- coding:utf-8 -*- #形参和实参 def description(x): #此处x为形参 pass ret = description('123') #123为实参 print ret #return函数 def m(): return 1 #函数执行到return处,会跳出,return后的代码不会执行 print 2 #指定参数 def student(name,age): #指定参数可以不按照顺序传参 print name,age student(age=23,name="孔宪超") #默认参数:1)此处name="张艳林",要是函数参数不指定,采用默认值; #2)要是函数形参既有默认参数,也有其他参数:(其他参数,默认参数) def drive(age,name="张艳林"): temp = name + '开车去东北' return temp ret = drive(23) print ret #动态参数1 def f1(*args): #*args:会把传入的数据当做元祖元素处理:可以传入所有数据类型 print args,type(args) f1(123,234,[123],{'k1':11}) #动态参数2 def f2(**kwargs): #**kwargs会把传入的数据当做字典元素:只能传入字典 print kwargs,type(kwargs) f2(k1=111,k2=222) #动态类型3 def f3(*args,**kwargs): #将二者结合起来,python内部会自己分类参数,此处默认参数不能放到最后面 print args,kwargs #**kwargs必须放到*args后面 f3(123,{'k1':1},k1=111,k2=222) #动态类型4 def f4(*args): print args,type(args) li = [1,2,3] f4(li) #列表当做元祖的元素 f4(*li) #直接把列表的元素当做元祖的元素 def f5(**kwargs): print kwargs,type(kwargs) dic = {'k1':1,'k2':2} f5(k1=dic) f5(**dic) #直接把字典元素传递给字典2)全局变量和局部变量
#!/usr/bin/env python #-*- coding:utf-8 -*- #全局变量:一般采用大写 局部变量:一般采用小写 p = 'alex' def func1(): a = 123 #global p 如要修改全局变量,需要加global关键字 p = 'eric' #这个地方变量p='alex',是重新创建了一个对象,不是对全局变量修改 print a def func2(): a = 456 print p print a func1() func2()3)练习题
#!/usr/bin/env python #-*- coding:utf-8 -*- #写函数:判断传入字符串中[数字],[字母],[空格]以及[其他]的个数 def f1(s): al_num = 0 space_num = 0 digit_num = 0 others_num = 0 for i in s: if i.isalpha(): al_num += 1 elif i.isdigit(): digit_num += 1 elif i.isspace(): space_num += 1 else: others_num += 1 return (al_num,digit_num,space_num,others_num) str = f1('12 a.') print "字母个数为{0},数字个数为{1},空格个数为{2},其他个数为{3}".format(str[0],str[1],str[2],str[3]) #写函数:判断用户传入的对象(字符串、列表、元祖)长度是否大于5 def f2(s,li,tu): if len(s) > 5: print "s长度大于5,等于%s" %(s) else: print "s长度小于5,等于%s" %(s) if len(li) > 5: print "li长度大于5,等于%s" %(li) else: print "li长度小于5,等于%s" %(li) if len(tu) > 5: print "tu长度大于5,等于%s" %(tu) else: print "tu长度小于5,等于%s" %(tu) f2('123451',[123],(12345678,)) #此处注意单元素元祖(123,),不写逗号会被当做int #写函数:检查传入列表的长度,如果大于2,则保留前2个长度的内容,并将新内容返回给调用者 def f3(li): if len(li) > 2: li = li[0:2] return li ret = f3(['123',{"k2":222},123,{"k1":1}]) print ret #写函数:检查传入字典的每一个value的长度,如果大于2,则仅保留前2个产地股的内容,并将新内容返回给调用者 def f4(**kwargs): value1 = kwargs["k1"] value2 = kwargs["k2"] if len(value1) > 2 and len(value2) >2: kwargs["k1"] = value1 kwargs["k2"] = value2 return kwargs dic = {"k1":"v1v2","k2":[11,22,33,44]} ret = f4(**dic) #**kwargs的传值方式:k1 = value或者**dic print "di字典的元素为%s:" %(ret)4)内置函数
#!/usr/bin/env python #-*- coding:utf-8 -*- print abs(123) #abs(number),取绝对值 print all([True,True]) #all(iterable),循环可迭代参数,如果每个元素都为真,那么all的返回值为真 print all([False,True]) print any([1,2,3,'']) #any(iterable),循环可迭代参数,只要有一个元素为真,那么any的返回值为真 print bin(4) #bin(number),转化成二进制数 print hex(4) #hex(number),转化为十六进制 print oct(4) #oct(number),转化为八进制 print bool() #bool(self,x),判断真假,把一个对象转换成布尔值:布尔值为假的:0 None ''(空字符串) [](空列表) ()(空元祖) {}(空字典) print callable(111) #callable(object),验证一个对象可被执行 print divmod(10,3) #divmod(x,y),x除以3返回元祖(3,1) print range(1,100) print type(xrange(100)) exec "for i in range(10):print i" #执行python语句,无返回值 print eval("1 * 3") #执行python表达式,具有返回值:也可以执行字符串代码 ret = filter(lambda x:x > 22,[11,22,33,44]) #filter(函数,可迭代对象),函数的作用是对每个元素进行判断,返回True或False print ret #自动过滤掉不符合条件的元素,返回符合条件的元素组成新的list ret = map(lambda x:x + 100,[1,2,3,4]) #map(函数,可迭代对象),函数的作用是对每个元素进行操作,返回一个新的列表 print ret print hash("sdjldwlwlww") #主要用来对字典key的hash存取 print isinstance('123',str) #用于面向对象判断子类和父类的关系 print iter([1,2,3,4]) #生成可迭代对象,调用next方法获取元素 print max([12,3,444,4,5]),min([22,333,4,5,555]) #获取最大值和最小值 li1 = [1,2,3,4] li2 = ["aa","bb","cc","dd"] r = zip(li1,li2) print r f2 = lambda x,y,z:x*y*z #f2 = lambda 形式参数:函数表达式,在这里f2是一个函数,需要调用传参才可以使用 print f2(1,2,3)5)文件操作
r:只读 w:只写模式[不可读;文件不存在则创建,存在则清空内容] x:只写模式[不可读;文件不存在则创建,存在则报错] a:追加模式[不可读;文件不存在则创建,存在则只追加内容] r+:读写 w+:写读 x+:写读 a+:写读 f.read() #把所有的内容放到一个字符串中输出 f.readline() #输出一行内容 f.readlines() #把所有的数据放到一个列表中输出