Python笔记④ 10.24

一、函数

1.无参函数
(1)定义函数

def 函数名():
	代码
'''函数的调用'''
def printinfo():
    print('-'*10)
    print('人生苦短,我用python')
    print('-'*13)
printinfo()

在这里插入图片描述
2.有参函数

def add2num(a,b):
    c = a + b
    print(c)
add2num(13,6)

在这里插入图片描述
3、传参顺序

def xiu(a,b,c):#此处abc是形参
    he = a + b - c
    print(he)
xiu(33,12,5)#位置传参。此处是实参


def xiu(a,b,c):
    he = a + b - c
    print(he)
xiu(a = 33,b = 12,c = 5)#关键字传参。关键字传参不能写在位置传参前面
# xiu(a=33,12,5)会报错

在这里插入图片描述

'''举个例子'''
def xiu(a,b,c=5):
    print(a+b-c)
xiu(33,12)
xiu(33,12,1)#1覆盖5

def test(a, b):
    return a+b,a-b
c, d= test(2,33)
print(c, d)

在这里插入图片描述
4.函数的返回值

'''把两个数的和返回'''
def test(a, b):
    return a + b
c = test(1, 2)
print(c)

在这里插入图片描述

5.函数的嵌套

'''函数的嵌套'''
def testb():
    print('----testb start----')
    print('这里是testb执行的。。。')
    print('----testb end----')

def testa():
    print('----testa start----')
    testb()
    print('----testa end----')
testa()

在这里插入图片描述

二、局部变量和全局变量

c = 5
d = 233#c和d是全局变量
def two_sum(a, b):
   c = 10#局部变量,只作用于函数内部
    print(a+b-c)
two_sum(2,3)

在这里插入图片描述

三、修改变量

用global

c = 5
d = 233#全局变量
def two_sum(a, b):
    global c,d#局域变量更改全局变量
    # global c
    # global d

四、函数的返回值(一)

1.函数间的数据共享
全局变量在局部使用并且更改数据保存,在另一个函数里面直接使用。

a = 0
def test1():
    global a
    a = 100
def test2():
    global a
    #注意,这里没有重新定义a的值!
    print(a)
test1()
test2()

在这里插入图片描述
2.函数的嵌套使用
在这里插入图片描述
3.默认返回类型为元组,也可以返回为其他类型

def li():
    return [1,2]
a = li()
print(a)
print(type(a))

在这里插入图片描述

函数的返回值(二)

1.return除了能将数据返回之外,还有一个隐藏功能:结束函数
在这里插入图片描述
2.一个函数返回多个值

def fun(a,b):
    shang = a//b
    yushu = a%b
    return shang,yushu#默认是元组
result = fun(5,2)
print(result)#输出(2,1)

在这里插入图片描述

五、函数的参数

1.不定长参数
有时可能需要一个函数能处理比当初声明更多的参数,这些参数叫做不定长参数,声明时不会命名
➢*args 存放所有未命名的变量参数,args为元组
➢ **kwargs 存放命名参数,即形如key=value的参数,kwargs为字典

def fun(a,b,*args,**kwargs):
    print('a=%d'%a)
    print('b=%d'%b)
    print('args:')
    print(args)
    print('kwargs:%s'%kwargs)
fun(1,2,3,4,5,m=6,n=7,p=8)

在这里插入图片描述

def fun(a,b,*args,**kwargs):
    print('a=%d'%a)
    print('b=%d'%b)
    print('args:')
    print(args)
    print('kwargs:%s'%kwargs)
# fun(1,2,3,4,5,m=6,n=7,p=8)

c = (3,4,5)
d = {'m':6,'n':7,'p':8}
fun(1,2,*c,**d)
fun(1,2,c,d)

在这里插入图片描述
2.顺序
缺省参数、*args、关键字参数、**kwargs

六、拆包,交换变量的值

➢ 拆包时要注意,需要拆包的数据个数要与变量的个数相同,否则程序就是异常 ➢ 除了对原子拆包之外,还可以对列表,字典等拆包
注意字典取出来的是key而不是键值对

'''➢ 定义一个函数接收多个参数,默认值b=1,函数的参数未知个数,把接收的所有参数加起来 
def fun(*args,b=1,**kwargs):
    he = 0
    for i in args:
        he += i
    he += b
    for k in kwargs.values():
        he += k
    print(he)
fun(1,2,3)#输出值是7'''

tu = ('小张','小刘')
a,b = tu
print(a)
print(b)#元组的拆包

a = 1
b = 2
a,b=b,a
print(a,b)#ab值互换

在这里插入图片描述

a, b = {'m':11,'n':22}
print(a)
print(b)#字典的拆包取key值

在这里插入图片描述

七、匿名函数

➢ 用lambda关键词能创建小型匿名函数

sum = lambda arg1,arg2:arg1+arg2
print('value of total:%d'%sum(10,20))
print('value of total:%d'%sum(22,3))

在这里插入图片描述
应用场景
1、函数作为参数传递

def fun(a,b,opt):
    print('a=%s'%a)
    print('b =%s'%b)
    print('result =%s'%opt(a,b))
fun(1,2,lambda x,y:x+y)

在这里插入图片描述
2、作为内置函数的参数(排序的内置函数sort)

3、按name排序

4、按age排序

stus = [{'name':'mianyi','age':18},{'name':'levi','age':23},{'name':'lihua','age':20}]
func = lambda x:x['name']
stus.sort(key=func)#sort  #name排序
print(stus)
stus.sort(key= lambda x:x['age'])#age排序
print(stus)

在这里插入图片描述

八、三元表达式

1、定义
➢ 三元表达式实现的效果就是,条件成立的情况下返回一个值,不成立的情况下返回另外一个值

def max2(x,y):
    # if x > y:
    #     return x
    # else:
    #     return y
    return x if x > y else y

➢res = 条件成立的情况下返回的值 if 条件 else 条件不成立的情况下返回的值三 元表达式

name = input('名字:').strip()
res = 'RUA' if name=='mianyi' else 'hangua'
print(res)

在这里插入图片描述 在这里插入图片描述

九、列表和字典生成式

1、列表生成式

names = ['lxx','zxx','wxx']
l = []
for name in names:
    res = name +'_DSB'
    l.append(res)
print(l)
#以上代码换成一行
l=[name + '_DSB' for name in names]
print(l)

在这里插入图片描述
2、字典生成式

dic = {}
li =['姓名','年龄','性别','QQ']
li2 = ['mianyi',18,'woman',386149176]
for i,k in zip(li,li2):
    dic[i] = k
print(dic)
print(len(dic))#len是内置函数,查看元素个数

在这里插入图片描述

items = [('name','egon'),('age',18)]
dic = dict(items)
print(dic)

在这里插入图片描述

keys = ['name','age','sex']
vals = ['jane',18,'female']
dic = {}

for i,k in enumerate(keys):#enumerate里的i是索引
    dic[k] = vals[i]
print(dic)

for i, k in zip(keys,vals):
    dic[i] = k
print(dic)

dic = {k:vals[i] for i,k in enumerate(keys)}#enumerate里的i是索引
print(dic)

dic = {i:k for i,k in zip(keys,vals)}
print(dic)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值