可变参数和关键字参数
# def send_report(*args):#可变参数、参数组
# print('发邮件')
# print(args)
def send_report(**kwargs):#关键字参数
print('发邮件')
print(kwargs)
# send_report() #不传
# send_report(num=1)#会报错
# send_report(name='xiaohei',age=18)
#**args
#1不是必传的
#必传的还是不必传的
#*args,
# 1、不是必填参数
# 2、不限制参数的个数
# 3、传入多个参数的时候他把参数放到一个元组里面
# def myfunc(name,addr='beijing',**kwargs):
# print('name',name)
# print('addr',addr)
# print('args',kwargs)
def myfunc2(name,addr='beijing',*args,**kwargs):
print('name',name)
print('addr',addr)
print('addr',args)
print('args',kwargs)
# myfunc2(name='xiaobai',addr='shanghai',age=18,sex='nv')
myfunc2('xiaohei','chengdu','chongqing',country='china')
# # myfunc(phone=110,addr='beijing',qq='23423423',email='aaa',name='xxx')
#
# myfunc('jiajinju',phone='110',qq='qqq',email='qq',addr='1')
#
# myfunc('jiajinju','qqqq',phone='110',email='email1',qq='qq')#错误的
#关键字参数后面不能再用位置参数了。
#传参解包
def connect(ip,port,username,password):
print(ip)
print(port)
print(username)
print(password)
# info = ('192.169.1.1',3318,'root','123456')
# li = ['abc','bcd','123',456]
# se = {1,2,3,4}
# s = '1234'
# dic = {'port':3307,'username':'root','password':'1233','ip':'127.0.0.1'}
#
# connect(*info) #解包 '192.169.1.1',3318,'root','123456'
# connect(**dic) #解包 port=3307,username=root,password=1233,ip=127.0.0.1
#
1、函数补充完成
可变参数、参数组,*args
# 1、不是必填参数
# 2、不限制参数的个数
# 3、传入多个参数的时候他把参数放到一个元组里面
关键字参数:**kwargs
# 1、不是必填参数
# 2、不限制参数的个数
# 3、传入多个参数的时候他把参数放到一个字典里面
# 4、必须的使用关键字调用,k=v,k1=v1
调用函数的时候:
关键字参数后面不能再写位置参数了。
def myfunc(name,addr,phone,qq,email):
print(name,addr,phone,qq,email)
myfunc('jiajinju','qqqq',phone='110',email='email1',qq='qq')#正确的
myfunc('jiajinju','qqqq',phone='110','email1',qq='qq')#错误的
全局变量:
大家都可以用的变量就是全局变量。
不可变的数据类型是全局变量的话,必须得加global:
int str 元组
可变的数据类型是全局变量的话,不需要加global:
字典 list 集合
局部变量:
函数里面定义的变量都是局部变量。
内置函数:
import random
s = 'abcefg'
st = {3,4,1,1,7,3}
# print(all([1,2,3,4]))#判断可迭代的对象里面的值是否都为真
# print(any([0,1,2,3,4]))#判断可迭代的对象里面的值是否有一个为真
# print(bin(100))#十进制转二进制
# print(bool(''))#把一个对象转换成布尔类型
# print(chr(97))#打印数字对应的ascii
# print(ord('a'))#打印字符串对应的ascii码
# print(eval('[]'))#执行python代码,只能执行简单的,定义数据类型和运算
# print(exec('def a():pass'))#执行python代码
# s='''
# print("hello")
# '''
# exec(s)
f = open('product.json')
res = eval(f.read()) #只能执行简单的python代码。
print(res,type(res))
res = eval('{1,2,3,5}') #只能执行简单的python代码。
# s = sorted(s)#排序,返回一个list
# print(list(reversed(s)))#反转
# gb2312
# gbk
# Jp2313
# unicode 万国码
# utf-8
匿名函数
yll = lambda x:x+1 #冒号前面的是入参,后面是返回值
def yll2(x):
return x+1
map和filter
# map() #帮你循环调用函数的
# filter()
import random,string,os
stus = ['hanmin','chunting','jiajinju','yll','hjc']
# for stu in stus:
# os.mkdir(stu)
# def add_prx(name):
# return 'cnz_%s'%name
#
# # result = list(map(add_prx,stus))
#
# result = list(filter(add_prx,stus))
#
# print(result)
# [1,2,3,4,5,6,7]
#1、map是循环帮你调用函数的
#2、map会把函数每一次调用的返回值保存,最后返回
#filter
#1、循环帮你调用函数
#2、帮你过滤你传入的参数,函数的结果返回是true那就保存,返回false就不要了
stu_score = [60,30,50,70,99,100,67]
import xlutils
def pandan(score):
return score>=60
result = list(filter(pandan,stu_score))
print(result)
#/venv/
# for stu,score in stu_score.items():
# if score<60:
# print('不及格',stu)