python函数

函数可以实现一个特定的功能,比如:

  • print() 在控制台输出
  • input() 获取控制台输入的内容
  • type() 获取变量的数据类型
  • len() 获取容量的长度(元素的个数)
  • range() 生成一个序列[0,n)

1. 函数

将多行代码(可以实现一个特定的功能)放在一块,并给它起一个名字,在需要使用多行代码的时候,可以使用名字代替。

定义函数的好处:减少代码冗余(重复的代码不需要多次书写),提高编程效率

函数必须是先定义后调用

2. 函数定义

是给多行代码起一个名字的过程,关键字使用def (define的缩写)

def 函数名():

        代码块

3. 函数调用

语法是 函数名()

4. 参数

在函数定义的时候,在括号中写入变量,这个变量就成为函数的参数,是形式参数 (也叫形参)

在函数调用的时候, 可以给形参传递具体的数据值, 叫做实际参数(也叫实参)

注意点:目前书写的函数, 如果存在形参,必须传递相同个数的实参。

# 函数定义
def sum_2_num(a,b):
    c = a + b
    print(c)


#函数调用
sum_2_num(1,2)  #1传给a,2传给b, 结果是3

5. 函数的嵌套调用

在一个函数中调用另一个函数

1)代码从上到下执行

2)函数定义不会执行函数中的代码

3)函数调用会进入函数中执行函数中的代码

4)函数中的代码执行结束, 会回到调用的地方继续向下执行

# 定义名为test01的函数
def test01():
    print(0)
    print(2)

# 定义名为test02的函数,并调用test01
def test02():
    print(1)
    test01()
    print(4)

# 函数调用
test02()
# 结果是
1
0
2
4

6. 函数的返回值

返回值:函数执行的结果

  • print() -->None
  • input() -->键盘输入的内容, 类型字符串
  • type() -->变量的数据类型
  • len() -->容器长度

return 关键字的作用,将一个数据值返回到调用的地方,函数遇到return 会结束函数的执行

return 关键字只能用在函数中。 如果一个函数没有写return,返回值是None

# 设计一个函数,返回两个数中的较大数
def max_num(a,b):
    if a >= b:
        return a
    else:
        return b

# 调用
m = max_num(4,9)
print(f"较大的数为{m}")
# 较大的数为9

7. 模块

在python中,每个代码文件都可以称为是一个模块

想要使用别人模块中写好的功能, 需要先导入别人写好的模块

as 关键字,可以给模块或者功能起别名

模块导入的方法:

方式一:(多用于导入系统中常用的模块和功能)

import 模块名

模块名.功能名 #使用其中的功能

import random

num = random.randint(1,99)
print(num)

方式二:(多用于导入自己书写的,或者是第三方的模块)

from 模块名 import 功能名 #导入指定的功能

功能名() #使用

from random import randint

num = randint(1,10)
print(num)

8. __name__ 变量

作用:如果在导入模块的时候, 模块中的部分代码不想被执行,可以用__name__来解决

在模块中,直接运行代码, __name__变量的值是__main__;

如果是被导入运行代码文件, __name__变量的值是模块名

if __name__ == '__main__':
    # 在这个if 缩进中书写的代码, 导入的时候不会被执行

9. 包 package

多个模块放在一个目录中集中管理, 并在这个目录中创建一个 __init__.py 文件(可以什么都不写),就是一个包

主要的使用方式是:

from 包名 import 模块名

模块名.工具名 #使用

10.变量的进阶

10.1 可变类型与不可变类型

根据内存中的数据是否允许修改, 将数据类型分为可变类型与不可变类型

1)可变类型:可以修改

列表(list)

字典(dict)

集合(set)

2)不可变类型:不允许修改

数字类型:int,float,bool

字符串:str

元组:tuple

10.2 局部变量和全局变量

根据变量定义的位置,将变量分为局部变量和全局变量

局部变量: 在函数内部定义的变量

如果想要在函数外部使用函数变量的值,使用return返回

def func1():
    num = 10 #局部变量
    print(num)

def fun2():
    num = 20  #局部变量
    print(num)

if __name__ == '__main__':
    func1()
    fun2()
    func1()
    
返回
# 10
# 20
# 10

全局变量:在函数外部定义的变量

特点:

1)全局变量,可以在任意函数内访问,读取

2)想要在函数内部修改全局变量的引用,需要使用 global 关键字声明

3)如果在函数内部出现和全局变量名字相同的局部变量, 在函数内部使用的是局部变量

11. 函数进阶

11.1 函数返回多个数据值

return关键字两个作用:

1)返回数据值

2)结束函数的运行

函数中如果想要返回多个数据值,一般是组成元组进行返回

def calc(a,b):
    """返回两个数的和及差"""
    return a+b,a-b

result = calc(10,20)
print(result)

# (30, -10)

11.2 函数传参的方式

是指如何将实参的值传递给形参

位置传参:在函数调用时, 按照形参的顺序将实参的值传递给形参

关键字传参:在函数调用时,指定将实参传递给哪个形参

混合使用:

1)位置参数必须写在关键字参数的前边

2)同一个形参只能接收一个实参值

def show_info(name,age):
    print(f"name:{name},age:{age}")

# 位置传参
show_info("feifei",18)
# 关键字传参
show_info(age=18,name = "feifei")
# 混合使用
show_info("feifei",age=18)

#name:feifei,age:18
#name:feifei,age:18
#name:feifei,age:18

11.3 多值参数:

1)在函数定义的时候,不确定在调用的时候, 实际参数有多少个,可以用多值参数

2)普通函数前面加上一个 *,一般写作是*args (arguments),类型是元组

参数顺序

def 函数名(普通,*args,缺省):

        pass

def my_sum(*args):
    """任意多个字符求和"""
    num = 0
    for i in args:
        num += i
    return num

print(my_sum(1,2)) #3
print(my_sum(1,2,3,4,5))  #15

11.4 拆包

my_tuple = (1,2,3,4,5)

print(my_sum(*my_tuple)) # 15

想要把列表(元组)中的数据作为位置参数进行传递,只需要在列表(元组)前加上一个 *,进行拆包

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值