Python 基础(四)函数

一、环境

环境 版本
操作系统 CentOS 7.9.2009
Python 3.9.7

二、函数概念

我们经常需要在同一个程序里多次复用相同的代码,函数可以很好的帮助我们完成这一点。我们在函数里写我们要重复做的事,然后我们在任何需要的时候调用它。函数有参数和返回值,在函数内部对参数进行处理,并把处理结果返回给调用者。

2.1 内置函数

内置函数就是 Python 解释器中不用引入任何包,一直可以使用的函数。
len()type()input()range()

2.2 自定义函数

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()
  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

三、定义和调用

我们使用关键字 def 来定义一个函数,定义函数后需要在函数名的括号中写上参数,最后加 :,再换行输入函数内部的代码,注意函数内部代码的缩进:

定义函数 printme,将一个字符串作为传入参数,再输出。

脚本 3.1.py

#!/usr/bin/env python3

def printme( a ):
    return print(a)

调用函数

修改脚本 3.1.py

#!/usr/bin/env python3

def printme( a ):
    return print(a)

if __name__ == '__main__':

    s = input("Enter a string: ")
    
    printme(s)
[root@localhost 4]# python3 3.1.py 
Enter a string: lolol
lolol

四、参数

4.1 必选参数

此类参数最为常见,使用函数时必选参数可以不写参数名,但必须对其赋值,参数赋值顺序是定义的时候指定的,所以必选参数又称为位置参数。如果不按照定义顺序传参,就要使用参数名进行传参。

脚本 4.1.py

#!/usr/bin/env python3

def server_info(ipaddress,port):
    print("IP:",ipaddress)
    print("Port",port)

print('参数默认的顺序')
server_info('192.168.1.1','22')

print('错误的顺序')
server_info('22','192.168.1.1')

print('错误的顺序,参数名传参')
server_info(port='22',ipaddress='192.168.1.1')
[root@localhost 4]# python3 4.1.py
参数默认的顺序
IP: 192.168.1.1
Port 22
错误的顺序
IP: 22
Port 192.168.1.1
错误的顺序,使用参数名传参
IP: 192.168.1.1
Port 22

4.2 默认参数

函数的参数可以设定默认值,这种参数称为默认参数。调用函数时,如果我们对默认参数没有赋值,则会自动赋其默认值。 改变上面的程序,将端口号设为默认参数,默认值为 22:

脚本 4.2.py

#!/usr/bin/env python3

def server_info(ipaddress,port='22'):
    print("IP:",ipaddress)
    print("Port",port)

print('参数赋值')
server_info('192.168.1.1','2222')

print('参数不赋值,使用默认值')
server_info('192.168.1.1')
[root@localhost 4]# python3 4.2.py 
参数赋值
IP: 192.168.1.1
Port 2222
参数不赋值,使用默认值
IP: 192.168.1.1
Port 22

注意点

1、默认参数后面不能再有必选参数,例如 f(a,b=90,c) 就是错误的;
2、默认参数的默认值必须设为不可变的数据类型(如字符串、元组、数字、布尔值、None 等)。

4.3 可变参数

顾名思义,可变参数意味着参数的数量是可变的,调用函数时,在可变参数的位置直接传入一个元组或者任意数量的参数。又叫不定长参数。

可变参数的定义格式是在参数名前面加上 * ,参数名可以自定义,通常写成 *args

脚本 4.3.py

#!/usr/bin/env python3

def server_info(ipaddress,*ports):
    print("IP:",ipaddress)
    for port in ports:
        print("Port:",port)

print('一个ports参数')
server_info('192.168.1.1','22')

print('两个ports参数')
server_info('192.168.1.1','22','23')

print('三个ports参数')
server_info('192.168.1.1','22','23','24')
[root@localhost 4]# python3 4.3.py 
一个ports参数
IP: 192.168.1.1
Port: 22
两个ports参数
IP: 192.168.1.1
Port: 22
Port: 23
三个ports参数
IP: 192.168.1.1
Port: 22
Port: 23
Port: 24

4.4 关键字参数

以上三种函数的参数(必选参数、默认参数、可变参数)在赋值时都可以不写参数名,而关键字参数允许传入零个或任意多个带参数名的参数,其中参数名可自定义,这些关键字参数会在函数内部自动生成一个字典,用来扩展函数的功能。

关键字参数的定义格式是在参数名前面加上 ** ,参数名可以自定义,通常写成 **kw
脚本 4.4.py

#!/usr/bin/env python3

device = {
    
    'OS':'CentOS','CPU':'4','Mem':'8G'}

def server_info(ipaddress,**kw):
    print("IP: ", ipaddress)
    for key,value in kw.items():
        print('{}: {}'.format(key, value))

server_info('192.168.1.1',**device)
[root@localhost 4]# python3 4.4.py
IP:  192.168.1.1
OS: CentOS
CPU: 4
Mem: 8G

猜你喜欢

转载自blog.csdn.net/qq_39680564/article/details/108794919