首页 > 编程语言 >python学习笔记整理03(函数)

python学习笔记整理03(函数)

时间:2022-12-14 21:12:08浏览次数:52  
标签:03 函数 python 笔记 num 参数 func print def

1 语法:

1.1 基本语法:

# 1.定义函数
# 使用 def (define)关键字定义函数,且函数命名方法要遵循 标识符规则
def func1():
    # 定义函数内的代码称为 函数体
    print('函数1')

# 2.调用函数
# 调用函数代码必须在函数体外,直接使用函数名即可调用
func1()

#3.函数可嵌套使用
def func2():
    fun1()
    print('函数2嵌套了函数1')

 

1.2 形参与实参:

# 形式参数,简称形参:定义函数时定义,起占位作用,没有实际数值
def func(num1, num2):  # num1 num2 是形参
    num = num1 + num2  # 在函数中会变化数值的参数,可以定义为形参
    print(num) 


# 实际参数,简称实参:调用函数时传递,有实际数值
func1(1, 3)  # 1 3 是实参,实参必须与形参数量一一对应

 

1.3 返回值:

# 用 return 关键字定义返回数据,若没有返回值可省略不写,或直接书写 return 不接数据
# 函数中得到的数据在后续的代码中还要使用,就需要将这个数据值返回,以供后续使用
def func(num1, num2):
    num = num1 + num2
    return num  # 函数代码遇到 return 就会结束执行

 

 

2 变量进阶

 2.1 变量的本质

  1)变量存储数据的方法是 引用地址,即将 数据地址 保存到 变量对应的内存中,可使用 id() 获取引用的数据地址

  2)可变类型和不可变类型:数据所在的内存是否允许修改,允许修改就是可变类型,不允许修改就是不可变类型

    ①只有赋值运算符 = 可以改变变量的引用(不使用=,变量引用的数据中的内容是否会变化,会变化是可变的,不会变化是不可变的)

    ②可变类型:列表、字典、集合,不可变类型:整型、浮点型、字符串、元组  

2.2 组包和拆包

a = 1
b = 2

# 组包 pack:将多个数据值使用逗号连接,组成元组
c = a, b  # print(c)  ===>   (1, 2)

#拆包 unpack:将容器中的数据值使用多个变量分别保存的过程
(a, b) = c  # print(a)   ===>  1,print(b)   ===>   2

# 注意变量的个数和容器中数据的个数要保持一致
# 赋值运算符是将 右边代码的执行结果 保存在 左侧变量中
x, y, z = [1, 2, 3]  # print(x, y, z)  ===>   1, 2, 3

 

2.3 局部变量和全局变量

# 全局变量:在函数外部定义的变量,可以在整个代码中使用
g_num = 1

def func1():
    # 局部变量:在函数内部定义的变量,只能在函数内部使用
    num = 10
    print(f'func1 函数中的局部变量{num}')


def func2():
    print(f'代码中的全局变量{g_num}')


def func3():
    # 函数内部默认是局部变量,若想在函数内部修改全局变量,必须先用 global 声明
    global g_num
    g_num = 10
    print(f'修改了全局变量{g_num}')

 

 

3 函数进阶

3.1 返回多个数据值

def func(a, b):
    num1 = a + b
    num2 = a - b
    # 函数中返回多个数据值,将多个数据值组成 容器 进行返回,一般是元组(组包)
    return num1,  num2

# 获取数据方式一:索引
result = func(1, 2)
print(result[0], result[1])

# 获取数据方式二:拆包
x, y = func(1, 2)
print(x, y)

 

3.2 函数的参数

1)传参方式

def func(a, b, c):
    print(f'a:{a}, b:{b}, c:{c}')

# 位置传参:按照形参顺序传递实参
func(1, 2, 3)

# 关键字传参:指定具体形参传递数据值
func(a=1, b=2, c=3)

# 混用:关键字传参必须在位置传参之后
func(1, 2, c=3)

 

2)完整的参数

def func(name, *args, sep=' ', **kwargs):
    pass
# name  普通参数
# *args  (arguments)不定长位置(元组)参数,可接收任意多个位置参数,必须写在 位置参数 的后面
# sep=' '  默认参数(缺省参数),不传参时默认传递设置的默认值
# **kwargs  (key arguments)不定长关键字(字典)参数,可接收任意多个关键字参数,必须写在 所有参数 的后面
# 不定长参数作为单个参数传参时需要先拆包

def func(*args, **kwargs):
    num = 0
    for i in args:  # 
        num += i    
    for j in kwargs.values():
        num += j    
    print(num)


my_list = [1, 2, 3, 4]
my_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
# 想要将列表中的数据 分别作为位置参数 进行传参,需要用 * 对列表进行拆包操作
func(*my_list)
# 想要将字典中的数据 分别作为关键字参数 进行传参,需要用 ** 对字典进行拆包操作
func(**my_dict)

 

 3)匿名函数

# 标准函数:使用 def 定义的函数
# 匿名函数:使用 lambda 定义的函数

# 定义函数:lambda 参数: 一行代码,不需传参时,参数可省略,返回值是代码运行结果,不需要用 return
# 使用函数:赋值给变量 变量 = lambda 参数: 一行代码 ,使用 变量() 调用函数
func1 = lambda: print('匿名函数')  # func1()   ===>   匿名函数
func2 = lambda: '匿名函数'  # print(func2())   ===>   匿名函数
func3 = lambda a, b:print(a+b)  # func3(1, 2)   ===>   3
func4 = lambda a, b: a + b  # print(func4(1, 2))   ===>   3
# 使用匿名函数作为参数为字典排序
# 列表.sort(key=lambda x: x[key])

user_list = [{'name': 'zhangsan', 'age': 18}, {'name': 'lisa', 'age': 28}, {'name': 'zhaosi', 'age': 20}]

user_list.sort(key=lambda user_list: user_list['age'])
print(user_list)

标签:03,函数,python,笔记,num,参数,func,print,def
From: https://www.cnblogs.com/shiyi10086/p/16982696.html

相关文章

  • 网络流学习笔记
    网络流初步一个网络\(G=(V,E)\)是一张有向图,图中每条有向边\((x,y)\inE\)都有一个给定的权值\(c(x,y)\),称为边的容量。图中还有两个节点\(S\)和\(T\),源点和汇点。网络......
  • 详解物理层-通信基础【王道计算机网络笔记】
    ![![[附件/Pastedimage20221120151810.png|100]]](https://img-blog.csdnimg.cn/6765bf898d2a41588eb9e60989ab40bf.png=x300)物理层接口特性物理层解决如何在连接各种......
  • [LeetCode]003-无重复字符的最长子串
    >>>传送门题目给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。示例示例1输入:s="abcabcbb"输出:3解释:因为无重复字符的最长子串是"abc",......
  • 用Python调用OpenAI API做有趣的事
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • 【Linux】ps -ef|grep -v grep|awk '{print $2}' 命令详解
    前言在Linux服务器中使用脚本时,经常见到ps-ef|grepxxx|grep-vgrep|awk'{print$2}'这一句命令前半部分的ps-ef|grep命令,相信经常接触Linux的人肯定明白,但是后半......
  • 仿真环境设置(一)- windows10, python 3.8
    1安装miniconda参考网上材料,打开Miniconda官网,点击对应系统版本的安装器,然后安装即可。安装过程中推荐:为所有人/只为我:只为我;将conda添加到PATH中,是/否:是。(虽然不......
  • Python笔记--字符串
    字符串的三种定义单引号定义法:双引号定义法:三引号定义法:结果:其中,三引号定义的话,不用变量接收的话,就相当于多行注释;用变量接收的话,就是对于字符串的定义了。字符串......
  • #yyds干货盘点# react笔记之学习之state注意事项
    前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从......
  • 【Python】 try except 还是 if else(EAFP 还是 LBYL 风格)
     结论● 若超过95%的可能不会进入except异常处理中,则使用代码一的样式(EAFP风格)● 否则可以换成用代码二的样式(LBYL风格) 代码一(EAFP风格):try:判断代码excep......
  • Python小球移动游戏
    #-*-coding:utf-8-*-importsys#导入sys模块importpygame#导入pygame模块pygame.init()#初始化pygamesize=width,height=640,480#设置窗口screen......