函数二

函数

1. 什么函数
可以实现一些特定功能的方法

优点:

  1. 简化代码结构,增加代码的复用度
  2. 提高代码可读性,方便维护
2. 函数定义

def 函数名():

​ 函数体

函数名: 遵循标示符命名规则

注意:

​ 函数调用,先定义,后调用

​ 同一个模块里, 函数可以重名,但是会被覆盖

​ 函数区分大小写

def speaker():
  print("你们是最棒的~")
3. 函数定义方式

普通定义方式:

def speak():
  print("普通方式")

带有参数函数

def add(x,y):             # x,y 形参
	print(x+y)
add(100,200)              # x,y 实参

带默认值参数

错误形式: 
def add(x=10,y):  # 形参中,不全都带默认值情况下, 默认值参数要靠后
   print(x,y)
更正后:
def add(x,y=10):
	print(x+y)

总结:

 1. 如果定义函数有形参, 但是没有默认值, 那么调用时候,必须传递实参,且实参个数必须与形参相等
    2. 函数定义的时候,如果形参有默认值,那么传递的实参,会将默认值覆盖,不传递,也无所谓
    3. 函数形参不全有默认值,那么在定义过程中,默认值参数靠后

关键字参数

定义: 可以使用关键字,来改变形参和实参默认顺序

注意: 要么都给,要么都不给

def keyArgs(x,y):
	print("x的值{},y的值{}".format(x,y))
keyArgs(10,x = 20)
TypeError: keyArgs() got multiple values for argument 'x'

注意:

如果有形参并且没有默认值,实参中如果第一个给了关键字,其他都需要给

def keyArgs(x,y):
	print("x的值{},y的值{}".format(x,y))
keyArgs(x=10,20)
正确形式:
keyArgs(x=10,y=20)

实参赋值时候,如果顺序不固定,形参名 = 实参

def keyArgs(x,y):
	print("x的值{},y的值{}".format(x,y))

keyArgs(y=10,x=20)

如果形参都有默认值, 第一个设置形参名=实参,其他不需要给

def keyArgs(x=10,y=20,z=30):
	print("x的值{},y的值{},z的值{}".format(x,y,z))

keyArgs(y=90)
4. 函数返回值

关键字: return

def demo():
	return "py"
   print("hello ai")

没有返回值时候: None

返回多个值

def value():
   	return [1,2,3,4,5,6,7,8,9,10]
v = value()
print(v)
5. 函数练习

模拟实现pop功能

def pop(l):
new_list = l[:-1]
return new_list

l = [1,2,3,4,5]
l = pop(l)
print(l)

模拟实现popitem()函数功能,并返回被删除键值对

import random
def pop_item(dict):
keys = dict.keys()
klist = list(keys)
# 随机选择key一个效果
key = random.choice(klist)
# 获取key 和 value
key,value = key,dict[key]
del dict[key]
return key,value

d = {"头条":"抖音","阿里巴巴":"闲鱼","腾讯":"微信"}
key,value = pop_item(d)
print(key,value)

定义一个函数,实现字典健值交换

第一种写法: 
transDict = {"a":1,"b":2,"c":3}
transDict_new = {}
for key , value in transDict.items():
transDict_new[value] = key
print(transDict_new)

第二种写法:
transDict_new = dict([val,key] for key,val in transDict.items())
print(transDict_new)

# 第三种写法
transDict_new = dict(zip(transDict.values(),transDict.keys()))
# print(transDict_new)
# zip()函数 可以将两个序列中的值一一对应输出,需要强转,如果两个序列不一样长那么多余的值无法对应,不会输出
value = (1,2,3,4,5,6,7)
value1 = (7,6,5,4,3,2,1)
new = dict(zip(value1,value))
print(new)
#  输出结果为   
{7: 1, 6: 2, 5: 3, 4: 4, 3: 5, 2: 6, 1: 7}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值