python第九课

#len
# s='金老板小护士了'
# #len(s)
# def 启丽():#定义函数,
# i=0
# for k in s:
# i+=1
# print(i)
# return i#返回值
# # 启丽()#调用函数
# length=启丽()
# print(length)
#函数:
# 定义了之后,可以在任何需要它的地方调用.
#没有返回长度,只是单纯的打印
#返回的重要性
#a,b
#len(a) #内置函数
#len(b)
#1不能变,只能计算s字符串的长度.
#2只能输出了结果
#没有返回值--返回None
#不写return
#只写return:结束一个函数的继续
#return None ---不常用
# def func():
# l=['金老板','启丽']
# for i in l:
# print(i)
# if i=='金老板':
# return None
# print('='*10)
# ret=func()
# print(ret)
# 返回1个值
# 可以返回任何数据类型
# 只要返回就可以接收到
# 如果在一个程序中有多个return时,那么只执行第一个
# def func():
# return {'k':'v'}
# print(func())
# 返回多个值
# 用多个返回值用多个变量接收:有多少返回值就用多少变量接收
#用一个变量接收:得到的是一个元组
# def func2():
# return 1,2
# r1,r2=func2()
# print(r1,r2)


#len(s)
# def 启丽(s):#定义函数,自定义函数只需要0个参数,接收参数
# i=0
# for k in s:
# i+=1
# return i #返回值
# f='金老板小护士了'
# ret=启丽(f)#传递参数:传参,实际参数,实参
# #ret=启丽([1,2,3,4,5])#传递参数:传参
# print(ret)

#什么叫参数
#参数的语法
#参数和实参的概念
# def f2(l1):
# f1(l1)
# for i in l1:
# print(i)
#
# def f1(l1):
# for i in l1:
# print(i)
# f2([1,2,3,4])
#参数
#没有参数
#定义函数和调用函数时括号里都不写内容
#有一个参数
#传什么就是什么
#有多个参数
#位置参数
# def my_sum(a,b):
# res=a+b #result
# return res
# ret=my_sum(1,2)
# print(ret)

#站在实参的角度上:
#按照位置传参
#按照关键字传参
#混着用可以:但是必须先按照位置传参,在按照关键字传参
#不能给同一个变量传多个值
#站在形参的角度上
#位置参数:必须传,且有几个参数就传几个值
#默认参数:可以上传,如果不传就是用默认的参数,如果传了就用传的
# def classmate(name,sex='男'):
# print('%s:%s'%(name,sex))
# classmate('二哥')
# classmate('小孟')
# classmate('大孟')
# classmate('朗哥','女')
#只有调用函数的时侯
#按照位置传:直接写参数的值
#按照关键字:关键字=值
#定义函数的时侯
#位置参数:直接定义参数
#默认参数,关键字参数:参数名='默认的值'
#顺序:位置参数,*args,默认参数 例:def func(a,b,*args,default=1,**kwargs):
# 动态参数:可以接收任意多个参数
#参数名之前加*,习惯参数名args
#参数名之前加**,习惯参数名kwargs
# def sum(*args):
# n=0
# for i in args:
# n+=i
# return n
# print(sum(1,2))
# print(sum(1,2,3))
# print(sum(1,2,3,4))

# def func(**kwargs):
# print(kwargs)
# func(a=1,b=2,c=3)
# func(a=1,b=2)
# func(a=1)
#动态参数有两种:可以接爱任意参数
#*args:接收是按照位置传参的值,组织成一个元组
#**kwargs: 接受的是按照关键字传参的值,组织成一个字典
#args必须在kwargs之前
# def func(*args,**kwargs):
# print(args,kwargs)
# func(1,2,3,4,5,a = 'aaa',b='bbbb')
#动态参数的另外一种传参数
# def func(*args):#站在形参的角度上,给变量加上*,就是组合所有传来的值.
# print(args)
# func(1,2,3,4,5)
# l=[1,2,3,4,5]
# func(*l)#站在实参的角度上,给一个序列加上*,就是将这个序列按照顺序打散
def func(**kwargs):
print(kwargs)
func(a=1,b=2)
d={'a':1,'b':2}
func(**d)

#函数总结
#1函数的定义def
#2函数的调用
#3函数的返回值return
#4函数的参数
#形参:
#位置参数:必须传
#*args:可以接受任意多个位置参数
#默认参数:可以不传
#**kwargs:可以接受多个关键字参数
#实参:按照位置传参,按照关键字传参

# li=['alex','wusir','rain']
# s1='*'.join(li)
# print(s1)
# sum=0
# for i in range(1,100):
# if i % 2 == 0:
# sum=sum -i
# else:
# sum+=i
# print(i)
#
# for i in range(100,-1,-1):
# print(i)
# count=0
# content=input('>>>')
# for i in range(len(content)):
# if i % 2 ==1 and content[i].isdigit():
# count+=1
# print(count)
# 实现一个整数加法计算器:(6分)
# 如:content = input(‘请输入内容:’) # 如用户输入:5+8+7....(最少输入两个数相加),然后进行分割再进行计算,将最后的计算结果添加到此字典中(替换None):
# dic={‘最终计算结果’:None}。
# content=input('请输入内容:')#5+8+7...
# content_list=content.split('+')
# print(content_list)
# sum=0
# for i in content_list:
# sum=sum+int(i)
# print(sum)
# li = [11,22,33,44,55,77,88,99,90]
# # result={}
# # for row in li:
# # if row >66:
# # if 'key1' not in result:
# # result['key1']=[]
# # else:
# # result['key1'].append(row)
# # else:
# # if 'key2' not in result:
# # result['key2']=[]
# # else:
# # result['key2'].append(row)
# # print(result)
# result={}
# for row in li:
# result.setdefault('key1',[])
# result.setdefault('key2',[])
# if row >66:
# result['key1'].append(row)
# else:
# result['key2'].append(row)
# print(result)
#
# user_list = [
# {'username':'barry','password':'1234'},
# {'username':'alex','password':'asdf'},
# ]
# board = ['张三','李小四','王二麻子']
# while 1:
# username=input('用户名:')
# if username.upper()=='Q':break
# password=input('密码:')
# for i in board:
# if i in username:
# username=username.replace(i,'*'*len(i))
# user_list.append({'username':username,'password':password})
# print({'username':username,'password':password})
# print(user_list)

#函数
#可读性强 复用性强
#def 函数名():
#函数体
#return 返回值
#所有函数 只定义不调用就一定不执行
#先定义后调用
#函数名() #不接受返回值
#返回值=函数名()#接受返回值

#返回值
#没有返回值:默认返回None
#不写return:函数内的代码执行完毕自动结束
#只写return:结束一个涵数
#return None
#返回一个值:结束了函数且返回一个值,可以是任意的值
#返回多个值:多个值之间用逗号隔开,接收的时侯可以用一个变量接收(元祖),也可以用等量的多个变量接收
# def f():
# return '栗子'
#
# ret = f('启丽')
# print(f())
#参数
#形参 定义函数的时侯
#位置参数:必须传
#*args:动态参数 可以接收任意多个位置传入的参烽
#默认参数:可以不传 --陷阱
#**kwargs:动态参烽 可以接收任意多个关键字传入的参数
#实参 调用函数的时侯
#按照位置传参数
#按照关键字传参数
#可以混用 位置参数必须在关键字传参之前
#不能对一个参数重复赋值

# def 启丽(*args):
# print(args)
# # 启丽(1,2,3)
# l=[1,2,3,4]
# 启丽(*l)

def qqxing(l=[]):
l.append(1)
print(l)
qqxing()
qqxing()

#如果默认参数的值是一个可变数据类型,
# 那么每一次调用函数的时侯
# 如时机不传值就公用这个数据类型的资源


原文地址:https://www.cnblogs.com/huangjianfeng/p/11238786.html