Python日常笔记(11) - 函数/拆包

函数

函数是组织好的,主要是为了重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,叫做自定义函数
格式:

def 函数名(参数列表):
   函数体

举例

# 函数定义x+y的值
def func(x, y):  # 函数名
   # 函数体
   print(f"{x}+{y}={x + y}")
# 调用
func(1, 2)
func(2, 2)
func(10, 2)


函数不调用是不执行的

返回值

def func1(x, y):
   return x + y
#调用
num = func1(5, 5)
print(f"func1返回{num}")

说明文档

使用hepl函数可以把函数的注释打印出来

def func1(x, y):
   """
   方法说明文档
   :param x:
   :param y:
   :return:
   """
   return x + y

函数嵌套

def func1():
   print("func1===================")
def func2():
   func1()
   print("func2===================")
# 调用
func2()

局部变量

局部变量是定义在函数体内部的,外部是无法访问的,只能在函数体内部生效,只是临时保存数据的,函数执行完毕之后将立即销毁

def func1():
   # 局部变量定义
   num = 1
   print(f"num={num}")

全局变量

全局变量在函数体内部和外部都是可以访问的

# 全部变量定义
num = 1
def func1():
   print(f"num={num}")
func1()
print(num)

全局变量在函数体内修改方式

def func1():
   # 修改全局变量
   global num
   num = 100
   print(f"num={num}")
func1()
print(num)

函数参数传递

# 函数参数传递
def func1(num1, num2):
   """
   :param num1: 定义的num1为形参
   :param num2: 定义的num2为形参
   :return:
   """
   print(f"num1={num1},num2={num2}")
# 3,4就是传递的实参
func1(3, 4)

多返回值
多返回值可以返回元组,序列,字典,集合等

# 多返回值
def func1():
   return {"no": 1, "name": "zhangsan"} # 返回字典
def func2():
   return {1, 2} # 返回集合
def func3():
   return [1, 2] # 返回列表
def func4():
   return (1, 2) # 返回元组
# 3,4就是传递的实参
print(func1())
print(func2())
print(func3())
print(func4())

扫描二维码关注公众号,回复: 10810928 查看本文章

参数无序传递
打乱传递的参数顺序,函数调用时,如果有位置参数时,位置必须在关键字参数的前面,单关键字参数之间不存在先后顺序

# 打乱传递的参数顺序
def func1(name, age, sex):
   print(f"name={name},age={age},sex={sex}")
func1(age=18, name="zhangsan", sex="女")

缺省参数

缺省参数就是有默认值的参数,在调用时可以不用省略不用传递,但是所有的参数必须写在缺省参数的前面

# 缺省参数
def func1(name, age, sex="女"):
   print(f"name={name},age={age},sex={sex}")
func1(age=18, name="zhangsan")

可变参数

可变参数用于不确定调用的时候会传递多少个参数,此时,可用包裹位置参数,或者包裹关键字参数,来进行参数传递,会显得非常方便,不过接受的类型都是元组格式

# 缺省参数
def func1(*args):
   print(args)
func1("zhangsan", 18)

关键字可变参数传递,接受的是字典类型

def func1(**kwargs):
   print(kwargs)
func1(name="zhangsan", age=18, sex="男")

元组拆包

def func1(*args):
   return args
x,y,z = func1(1,2,3)
print(x)
print(y)
print(z)

字典拆包

# # 缺省参数
def func1(**kwargs):
   return kwargs
dict1 = func1(name="zhangsan", age=18, sex="男")
#拆出来的都是key值
key1, key2, key3 = dict1
print(dict1[key1])
print(dict1[key2])
print(dict1[key3])

可变和不可变类型

可变数据类型:进行修改数据之后计算机不会重新分配内存地址。
列表,字典,集合都属于可变数据类型
不可变数据类型:修改值之后计算机会重新分配内存地址
整型,浮点型,字符串,元组
实例,使用id函数可以查看内存地址

# 可变数据类型
list1 = [1, 2, 3]
list2 = list1
print(id(list1))
print(id(list2))
list1[0] = 12
print(id(list1))
print(id(list2))
print("=========================")
# 不可变类型
x = 1
print(id(x))
x = 15
print(id(x))

作者:阿超
原创公众号:『Python日常笔记』,专注于 Python爬虫等技术栈和有益的程序人生,会将一些平时的日常笔记都慢慢整理起来,也期待你的关注和阿超一起学习,公众号回复【csdn】优质资源。

发布了55 篇原创文章 · 获赞 16 · 访问量 9510

猜你喜欢

转载自blog.csdn.net/duchaochen/article/details/105032452
今日推荐