• Python——函数


    1、函数定义

    def 函数名(形参1,形参2):
    	函数体
    	return 返回值   #return 不是必须的
    
    • 1
    • 2
    • 3

    2.函数的调用

    函数名(实参1,实参2)   # 实参与形参个数一样
    
    • 1

    或者

    返回值 = 函数名(实参1,实参2)   # 实参与形参个数一样
    
    • 1

    注意:函数得先定义,后调用

    3.实例

    • 求和函数
    # 定义一个求和函数
    def calcSum(begin,end):
    	theSum = 0
    	for i in range(begin,end+1):
    		theSum += i
    	print(theSum)
    
    # 调用函数
    # 求1-100的和
    calcSun(1,100)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 打印
    def test():
    	print('hello')
    	print('world')
    # 两次调用
    test()
    test()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4.函数参数

    • 形参:函数声明时括号里的参数
    • 形参的值是不确定的,只是用来占位
    • 实参:函数调用时传入的参数
      形参与实参个数一致,类型不受限制,但是实参类型需一致
    def add(a,b):
    	return a + b                                                                                 
    
    print(add(2,3))
    print(add(2.5,3.2))
    print(add('hello','world'))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    5.函数的返回值

    打印逻辑放在函数外,这种更常用,利于和用户交互

    # 定义一个求和函数
    def calcSum(begin,end):
    	theSum = 0
    	for i in range(begin,end+1):
    		theSum += i
    	return theSum
    
    # 调用函数
    # 求1-100的和
    result = calcSun(1,100)
    print(result)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 多个返回值,一般搭配分支语句/循环语句
    def isOdd(num):
    	if num % 2 == 0:
    		return False
    	else:
    		return True
    	
    print(isOdd(10))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 一次性返回多个值,
    def getPoint():
    	x = 1
    	y = 2
    	return x,y
    a,b = getPoint()   # 多元赋值
    _,b = getPoint()   #值需要y,不需要x
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    6.函数的注释

    • “”“”"回车写注释
    • help(函数名)查看注释
    def add(a, b):
        """
        这是求和的函数
        a:第一个数字
        b:第二个数字
        return:和
        """
        return a + b
    
    
    print(add(1, 2))
    help(add)
    	
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    6.变量的作用域

    • 局部变量只在函数内有效,全局变量在整个程序有效
    • 全局变量如果是不可变的,在函数中进行修改时需要添加global关键字
    • 全局变量如果是可变的,在函数中进行修改时不需要添加global关键字,如:列表
    x = 20    # 全局变量
    list1 = [1,2,3,4]
    
    def func():
    	print(list1)  #[1,2,3,4]
    	
    def test():
    	x = 10
    	list1.append(8)
    	print(list1)  # [1,2,3,4,8]
    	print(x)
    test()   # 10
    print(x)  # 20
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 在函数中也可定义全局变量
    def test():
    	global x = 10  # 当需要修改全局变量时,需申明一下全局变量:global 变量名
    test()  
    print(x)  # 10
    
    • 1
    • 2
    • 3
    • 4

    7.函数的执行过程

    调试执行:可随时停下来,观察中间过程
    代码单步运行:step into

    8.函数链式调用

    用一个函数的返回值作为另一个函数的参数

    def isOdd(num):
    	if num % 2 == 0:
    		return False
    	return True
    
    def add(x,y):
    	return x + y
    
    print(isOdd(add(2,3)))
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    9.函数的嵌套调用

    一个函数体的内部还可以调用其它函数

    def test1():
    	print('hello')
    
    def test2():
    	print('world')
    	test1()
    
    test2()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    10.函数递归

    • 一个函数,自己调用自己
    • 递归代码两因素:递归结束条件、递推公式
    • 递归缺点:执行过程复杂、容易出现”栈溢出“
    • 递归代码一般可以转换成等价的循环代码,循环代码一般更有优势
    • 递归优点:代码简单
    # n!
    def factor(n):
    	if n == 1:
    		return 1
    	return n * factor(n - 1)
    print(factor(5))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    n为局部变量,局部变量在函数的栈帧

    11.参数默认值

    debug:形参的默认值,带有debug,可以在调用函数的时候不必传参(注意:只能在形参列表的最后)

    def add(x,y,debug=False):
    	if debug:
    		print(f'x = {x},y = {y}')
    	return x + y
    
    result = add(10,20)  # 不开启调试
    result = add(10,20,True)   # 为True则开启调试
    print(result)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    12.关键字参数

    • 顺序传参/位置传参
    def add(x,y):
    	return x + y
    print(add(2,3))
    
    • 1
    • 2
    • 3
    • 关键字传参
    def test(x,y):
    	print(f'x = {x}')
    	print(f'y = {y}')
    test(x = 10,y = 20)
    test(y = 2,x = 1)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    注意:位置传参和关键字传参混合使用时,要求位置参数在前,关键字参数在后

  • 相关阅读:
    docker jenkins 安装配置
    Nest.js项目初始配置
    Letcode动态规划专题-困难
    链式二叉树的基本操作(C语言实现)
    第四章 教学实施
    Revel管理后台
    利用正则表达式限制网页表单里的文本框输入内容
    8.7 typedef关键字
    华为云云耀云服务器L实例评测 | 基于docker部署nacos2.2.3服务
    Redis五大数据类型的底层设计
  • 原文地址:https://blog.csdn.net/weixin_41446512/article/details/128201027