python系统学习:第三周之函数

# 函数:如果某个程序中部分代码重复使用率较高,可以将其封装起来,用到的时候就可以去调用这个包,这就叫函数
# ----------------------第一部分-------------------------
# 定义
def sayhi():
print("hello word!")


# 调用
sayhi()


# ----------------------第二部分-------------------------
# 定义函数时的括号是用来传参数,参数的作用就是让函数调用适用性更加高
# 假设设立一个向用户问好的函数
def goodmorning(name): # 这个name就是我们传入的用户名字
print("你好,", name)


# 调用
goodmorning("牛屎虫")


# 调用多个参数
def sign(name, age, sex="男"):
print(name, age, sex)


# 调用
sign("牛屎虫", 25, "女")
sign("牛屎虫", 25)
# ----------------------第三部分-------------------------
# 在sign()函数中,参数是由分类的
# 定义函数时用到的name、age等属于形参,意为就是占位;调用时的"牛屎虫"等属于实参,意为实际参数
# 定义函数时,可以指定默认值,这里的sex="男",就是默认值
# ----------------------第四部分-------------------------
# 在sign()函数中,没有默认值的参数属于位置参数,就是调用函数时参数位置要对应;如果不想一一对应,就要用到关键参数
sign(age=16, name="牛屎虫")


# ----------------------第五部分-------------------------
# 为了同时给多个人发送问候信息,避免多次调用函数(一个人调一次),需要用到非固定参数
def say(info, *argv):
for name in argv:
print(info, name)


say("你好:", "lin", "wang", "hile") # *argv 这种写法传进去的是一个元组


# 第二种方式
def register(info, *argv, **kwargv): # *argv 这种写法传进去的是一个字典
print(info, argv, kwargv)


# 调用
d = {"wang0": "nan", "lily": "nv"}
register("hello", "wang", "lily", **d) # 注意调用方式
register("hello", "wang", "lily", lily="nv")


# ----------------------第六部分-------------------------
# 返回值:return 当函数执行完毕,若需要用到执行完毕后的结果,则要用ruturn返回想用到的结果,return意味着函数中止
def register2(info, name, age):
print(info, name, age)
if age > 22:
print("age is big")
return False # 定义返回结果
else:
print("hello")
return True # 定义返回结果


# 调用方法
ss = register2("hello", "wang", 11)
print(ss) # 打印调用方法后的输出,发现是符合条件的返回值,如果不设定return,会返回none
# ----------------------第七部分-------------------------
# 局部变量与全局变量
name = "牛屎虫" # 全局变量


def change_name():
name = "牛脚臭" # 局部变量
print(name)


change_name() # 方法内的name属于局部
print(name) # 方法内的重新命名,外部的并没有改变



各种参数的混合运用
1.a,b,c:单个参数
2.*a :可变参数
3.**a:关键字参数 (传入了字典键值对)
4.*,a,c:命名关键字参数

# *a  可变参数 元组
# 求 平方根
def square(*num):
sum = 0
for i in num:
sum += i * i
return sum


print(square(1, 3))


# **a 关键字参数 传入字典
# 录如信息
def stu_list(name, age, **kw):
return ('name:', name, 'age:', age, 'other:', kw)


num = {'谁': '出来'}
print(stu_list('wang', 23, **num))


# 必选参数、默认参数、可变参数、命名关键字参数和关键字参数 混合使用 一看例子就明白
def f1(a, b, c=0, *args, **kw):
return ('a=', a, 'b=', b, 'c=', c, 'args=', args, 'kw=', kw)

# *之后的都为命名关键字参数
def f2(aa, bb, cc=0, *, dd, **kww):
return ('aa=', aa, 'bb=', bb, 'cc=', cc, 'dd=', dd, 'kww=', kww)
# 匿名函数
a = list(filter(lambda n: n % 2 == 1, range(1, 4)))
print(a)



原文地址:https://www.cnblogs.com/niushichong/p/10036760.html