python 学习笔记 —— 函数的认识


# 一 函数的基本知道
# 函数 表示代码可以实现某个功能 。下次用这个功能时直接调用函数就可以。
# 函数的定义
# def canf(): # def 来定义函数 函数名加括号
# print("我是函数") # 这里是代码块
# canf() # 表示调用 命名为canf这个函数。
# print(canf) # 这样执行显示的是这个函数内存中的地址
# print(canf()) # 加括号显示的是函数执行后的结果的返回值

# def canf():
# lists = []
# for i in range(0,10,2):
# lists.append(i)
# return lists # return 表示函数的返回值 返回值可以是任意数据类型。函数遇到return 就立即终止函数的运行 return 以下的代码就不运行了。
# # return 返回值 可以返回一个和多个值 多个值是以元组的数据类型表示的。
#
#
# print(canf())

# 二 函数的传参

# 函数分为 实参 和形参
# def canf(name): # 写在定义函数的括号里的参数叫做 形参
# print(f"{name}欢迎你的到来。")
# canf("杨涛") # 写在调用函数括号里的参数叫做 实参

# 实参的分类
# 1. 位置参数 传输几个位置参数就得有几个形参 (实参和形参要一一对应)

# def canf(a,b): # 位置参数有两个 形参就必须有两个
# print(a+b)
# canf(5,6) # 这里表示有连个位置参数

# 小插曲 三元运算符 适用于 if ... else 简单得语句判断。
# a = 10
# b = 20
# if a>b:
# print(a)
# else:
# print(b)

# 简写 格式

# print(a if a>b else b ) # 表示 判断成功则返回 a 判断失败 则返回 b

# def canf(a,b):
# return a if a >b else b # 这个就表示三元运算符得简单判断。
# c = canf(5,6)
# print(c)
#

# 2. 关键字参数
# def canf(a,b):
# print(f"我打印的是{b}")
# print(f"我打印的是{a}")
# canf(b="名字",a="身高") # 这样直接赋值的是关键字参数 位置调换没有关系 但是还是的和形参数量一一对应。

# 3. 混合传参
# def canf(a,b,c):
# print(a+b+c)
# canf(4,5,c=50) # 混合传参 就是既有位置参照也有关键字参数。但是 位置参数要在关键字参数前面。也是要和形参的数量一一对应
# # 混合传参 关键字参数的位置可以和其他关键字参数相互调换。


# def canf(l1):
# b = len(l1)
# if b > 3:
# return l1[:3]
# else:
# return l1
#
# print(canf(["杨涛","杨灿"]))

# 简化版本的 三元运算
# def canf(l1):
# return l1[:2] if len(l1) else l1
# c = canf(["杨涛","杨灿","郭文丽"])
# print(c)

# 形参 的介绍
# 位置参数 形参的位置参数和实参的位置参数一样
# 默认值参数

# def canf(name,age="男",sex="175"): # 默认值参数是指 给形参赋值的 参数就叫做默认值参数 什么时候使用默认值参数 经常使用的参数可以设置为默认值参数。
# print(f"我的名字叫{name},性别{age},身高{sex}")
# canf("杨涛",age="女") # 如果有了默认值参数 实参除了位置参数必须写之外。默认值参数可以不用写,
# # 默认值参数也可以修改。直接在实参的位置 和写关键字参数的方法一样 。直接赋值来修改默认值参数。

# 万能参数 默认是 *args **kwargs 但是args 可以给改为任意字符 只要前面加个 * 符号 *args 表示接受所有实参的位置参数。
# 但是 kwargs 可以改为任意字符 只要前面驾驶** 符号 ** kwargs 表示接受所有实参的 关键字参数。
# def canf(*b,**c): # *b 是以元组的方式聚合 **c 是以字典的形式聚合
# a = 0
# e = 0
# for i in b:
# a = a+i
# for v in c.values(): # for k,v in c.items() 这样也可以取出 v的值
# e = e +v
# print(a+e)
# canf(1,2,3,4,5,6,7,8,9,10,s1=5,s2=6,s3=10)
#

# 形参角度的顺序
# (位置参数 *位置参数 默认参数 仅限关键字参数 **默认参数)

# * 和 ** 在函数定义时候代表的 聚合 在函数调用的时候代表 打散

# def canf(*args,**kwargs):
# print(args)
# print(kwargs)
# canf(*"杨涛",*"33") # 相当于以最小字符 打散到一个新的元组中 *
# canf(**{'name' :'杨灿'},**{'sex' :'69'}) # 相当于把两个字典合并到一起了。**
#
#
# 作用域的 划分 有全局和 局部的划分
# 局部可以引用 全局的 但是 全局不能引用局部的
# 局部引用全局的不能修改赋值 如果修改 global + 变量名
# 局部也可以定义一个全局的变量 定义方法 global + 变量名
原文地址:https://www.cnblogs.com/yangtao481/p/13086173.html