函数的参数

函数的参数

在Python3中主要有四大参数。

必选参数(位置参数)

不需要传递参数名,但是要按照定义的顺序传递参数值

代码

#!/usr/bin/env python

def connect(ip,port):
    print("ip:",ip)
    print("port:",port)
    
connect("192.168.1.1",22)

运行结果

┌──(root㉿kali)-[~/python_code/python_2]
└─# python client.py
ip: 192.168.1.1
port: 22

如果我们换个方式调用

代码

#!/usr/bin/env python

def connect(ip,port):
    print("ip:",ip)
    print("port:",port)
    
connect(22,"192.168.1.1")

运行结果:会发现反过来了

┌──(root㉿kali)-[~/python_code/python_2]
└─# python client.py
ip: 22
port: 192.168.1.1

我们可以这样调用

代码

#!/usr/bin/env python

def connect(ip,port):
    print("ip:",ip)
    print("port:",port)
    
connect(port=22,ip="192.168.1.1")

运行结果

┌──(root㉿kali)-[~/python_code/python_2]
└─# python client.py
ip: 192.168.1.1
port: 22

总结:虽然可以不带参数名,但是当我们不按照顺序去传参的时候,需要带上参数名才能保证输出顺序的准确性。

默认参数

顾名思义就是带有默认值的参数

代码

#!/usr/bin/env python

def connect(ip,port=22):
    print("ip:",ip)
    print("port:",port)
    
connect("192.168.1.1")

运行结果:不传参数值就使用默认值

┌──(root㉿kali)-[~/python_code/python_2]
└─# python client.py
ip: 192.168.1.1
port: 22

换个调用方式

#!/usr/bin/env python

def connect(ip,port=22):
    print("ip:",ip)
    print("port:",port)
    
connect("192.168.1.1",80)

运行结果:如果传入了参数值就使用传入的

┌──(root㉿kali)-[~/python_code/python_2]
└─# python client.py
ip: 192.168.1.1
port: 80

注意点:默认值参数后面不能有其它必选参数,可以有多个默认值参数。默认参数的默认值必须是不可变对象(int,str,float,tuple等)。

错误示例

#!/usr/bin/env python

def connect(ip,port=22,proto):
    print("ip:",ip)
    print("port:",port)
    print("proto:",proto)
    
connect("192.168.1.1",80,"static")

运行结果:报错

┌──(root㉿kali)-[~/python_code/python_2]
└─# python client.py
  File "/root/python_code/python_2/client.py", line 3
    def connect(ip,port=22,proto):
                           ^^^^^
SyntaxError: parameter without a default follows parameter with a default

可变参数

允许传入多个参数或者传入一个元组,可变参数会在内部自动组装成一个元组。

代码

#!/usr/bin/env python

def connect(ip,*port):
    print("ip:",ip)
    for p in port:
        print("port:",p)
    
    
connect("192.168.1.1",22,80,88)

运行结果

┌──(root㉿kali)-[~/python_code/python_2]
└─# python client.py
ip: 192.168.1.1
port: 22
port: 80
port: 88

关键字参数

允许传入多个带参数名的参数或者传入一个字典,在内部自动组装成一个字典。

代码

#!/usr/bin/env python

def connect(ip,*port,**kwargs):
    print("ip:",ip)
    for p in port:
        print("port:",p)
    for k,v in kwargs.items():
        print(f"{k}:{v}")

ports = (22,80,88)
kws = {"netcard":"eth0","proto":"static"}
    
connect("192.168.1.1",*ports,**kws)

运行结果

┌──(root㉿kali)-[~/python_code/python_2]
└─# python client.py
ip: 192.168.1.1
port: 22
port: 80
port: 88
netcard:etho
proto:static

命名关键字参数

这里不讲解命名关键字参数,后面项目中用到会详细讲解,这里只是提一嘴,命名关键字参数与关键字参数类似,区别在于命名关键字参数定义了传入的参数名,不允许传入没有定义的参数。

posted on 2025-06-18 01:42  burgess0x  阅读(13)  评论(0)    收藏  举报