您的位置:首页 > 编程语言 > Python开发

【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()  #把所有的数据放到一个列表中输出
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python