Python函数参数详解,三天让你掌握python,不再是小白

Python趣味算法:三天打鱼两天晒网问题详解(附完整代码) 本文介绍了如何用Python实现"三天打鱼两天晒网"的日期判断系统。核心算法包括:计算任意日期与基准日(1990年1月1日)的天数差,通过闰年判断和字典映射优化日期计算,再对5取模判断周期状态(余数1-3打鱼,4/0晒网)。文章详细解析了算法实现、流程优化和异常处理,并展示了运行验证结果(准确率100%)。同时提出了扩展应用方向,如工作日计算和纪念日功能。该方案不仅解决了特定周期判断问题,也为日期处理类需求提供了通用解决思路。 阅读详情

引言

随着程序功能的增多,代码量随之增大,此时仍不加区分地把所有功能的实现代码放到一起,将会使得程序的组织结构不清晰,可读性变差,且程序中需要频繁使用同一功能时,只能重复编写该功能的实现代码,日积月累,程序将变得冗长,并且当某一功能需要修改时,又不得不找出所有定义及使用这段功能的地方修改之,管理维护的难度极大。
到底该如何解决提出的这些问题呢?我们完全可以从现实生活中找到简化程序设计的方案:比如一个修理工会事先准备好螺丝刀、锤子等工具,这样在进行修理的过程中,需要用到拧螺丝的功能时就直接拿来螺丝刀使用,需要用到锤击物体的功能时就直接拿来锤子使用,而无需临时制造。这个例子的核心在于事先准备好工具,遇到应用场景时’拿来就用。
在程序中,具备某一功能的‘工具指的就是函数,事先准备工具’的过程即函数的定义,拿来就用’即函数的调用。


一、函数的定义

函数的使用必须遵循’先定义,后调用’的原则。函数的定义就相当于事先将函数体代码保存起来,然后将内存地址赋值给函数名,函数名就是对这段代码的引用,这和变量的定义是相似的。没有事先定义函数而直接调用,就相当于在引用一个不存在的’变量名’。

1.1 什么是函数

函数就相当于具备某一功能的工具
函数的使用必须遵循一个原则:
先定义
后调用

1.2 为何要用函数

为了解决代码以下问题:

  1. 组织结构不清晰,可读性差
  2. 代码冗余
  3. 可维护性、扩展性差

1.3. 如何用函数

先定义(三种定义方式(无参函数,有参函数,空函数))
后调用

三种调用方式
    1. 语句的形式:只加括号调用函数 add(1,2)
    2、表达式形式:# 赋值表达式 # res=add(1,2)
                  # 数学表达式 res=add(1,2)*10
    3、函数调用可以当做参数
        res=add(add(1,2),10)

二、函数定义,调用 返回值

2.1 定义函数的基本语法

def 函数名(参数1,参数2,...):
    """文档描述"""
    函数体
    return 值
  • def: 定义函数的关键字;
  • 函数名:函数名指向函数内存地址,是对函数体代码的引用。函数的命名应该反映出函数的功能;
  • 括号:括号内定义参数,参数是可有可无的,且无需指定参数的类型;
  • 冒号:括号后要加冒号,然后在下一行开始缩进编写函数体的代码;
  • “”“文档描述”"": 描述函数功能,参数介绍等信息的文档,非必要,但是建议加上,从而增强函数的可读性;
  • 函数体:由语句和表达式组成;
  • return 值:定义函数的返回值,return是可有可无的。
    若函数是工厂,参数则为工厂的原材料,返回值相当于工厂的产品

2.2 定义函数和调用函数内存变化

# 定义函数发生的事情
# 1、申请内存空间保存函数体代码
# 2、将上述内存地址绑定函数名
# 3、定义函数不会执行函数体代码,但是会检测函数体语法

# 调用函数发生的事情
# 1、通过函数名找到函数的内存地址
# 2、然后加括号就是在触发函数体代码的执行

2.2.1 有参函数

参数是函数的调用者向函数体传值的媒介,若函数体代码逻辑依赖外部传来的参数时则需要定义为参函数

def my_min(x,y):
    res=x if x < y else y
    return res

2.2.2 无参函数

def interactive():
    user=input('user>>: ').strip()
    pwd=input('password>>: ').strip()
    return (user,pwd)

2.2.3 空函数

​ 函数体为pass代表什么都不做,称之为空函数。定义空函数通常是有用的,因为在程序设计的开始,往往是先想好程序都需要完成什么功能,然后把所有功能都列举出来用pass充当函数体“占位符”,这将使得程序的体系结构立见,清晰且可读性强。例如要编写一个ftp程序,我们可能想到的功能有用户认证,下载,上传,浏览,切换目录等功能,可以先做出如下定义:

def auth_user():
    """user authentication function"""
    pass

def download_file():
    """download file function"""
    pass

def upload_file():
    """upload file function"""
    pass

def ls():
    """list contents function"""
    pass

def cd():
    """change directory"""
    pass

之后我们便可以统筹安排编程任务,有选择性的去实现上述功能来替换掉pass,从而提高开发效率。

2.3 函数返回值

​函数的使用分为定义阶段与调用阶段,定义函数时只检测语法,不执行函数体代码,函数名加括号即函数调用,只有调用函数时才会执行函数体代码
若需要将函数体代码执行的结果返回给调用者,则需要用到return。return后无值或直接省略return,则默认返回None,return的返回值无类型限制,且可以将多个返回值放到一个元组内 ,return多个返回值也是 以tuple的形式返回

>>> def test(x,y,z):
...     return x,y,z #等同于return (x,y,z)
... 
>>> res=test(1,2,3)
>>> print(res)
(1, 2, 3)

return是一个函数结束的标志,函数内可以有多个return,但只执行一次函数就结束了,并把return后定义的值作为本次调用的结果返回。


三、函数的参数

函数的参数分为形式参数和实际参数,简称形参和实参:
形参即在定义函数时,括号内声明的参数。形参本质就是一个变量名,用来接收外部传来的值。
形参与实参的关系:

  1. 在调用阶段,实参(变量值)会绑定给形参(变量名)
  2. 这种绑定关系只能在函数体内使用
  3. 实参与形参的绑定关系在函数调用时生效,函数调用结束后解除绑定关系

实参即在调用函数时,括号内传入的值,值可以是常量、变量、表达式或三者的组合:

#1:实参是常量
res=my_min(1,2)

#2:实参是变量
a=1
b=2
res=my_min(a,b)

#3:实参是表达式
res=my_min(10*2,10*my_min(3,4))

#4:实参可以是常量、变量、表达式的任意组合
a=2
my_min(1,a,10*my_min(3,4))

在调用有参函数时,实参(值)才会赋值给形参(变量名)。在Python中,变量名与值只是单纯的绑定关系,而对于函数来说,这种绑定关系只在函数调用时生效,在调用结束后解除。

3.1 形参与实参的具体使用

3.1.1 位置参数(包括位置形参和位置实参)

位置即顺序,位置参数指的是按顺序定义的参数,需要从两个角度去看:

  1. 在定义函数时,按照从左到右的顺序依次定义形参,称为位置形参,凡是按照这种形式定义的形参都必须被传值
def register(name,age,sex): #定义位置形参:name,age,sex,三者都必须被传值
    print('Name:%s Age:%s Sex:%s' %(name,age,sex))
register() #TypeError:缺少3个位置参数 
  1. 在调用函数时,按照从左到右的顺序依次定义实参,称为位置实参,凡是按照这种形式定义的实参会按照从左到右的顺序与形参一一对应

3.1.2关键字参数(实参)

在调用函数时,实参可以是key=value的形式,称为关键字参数,凡是按照这种形式定义的实参,可以完全不按照从左到右的顺序定义,但仍能为指定的形参赋值

register(sex='male',name='lili',age=18)
Name:lili Age:18 Sex:male

需要注意在调用函数时,实参也可以是按位置或按关键字的混合使用,但必须保证关键字参数在位置参数后面,且不可以对一个形参重复赋值

>>> register('lili',sex='male',age=18) #正确使用
>>> register(name='lili',18,sex='male') #SyntaxError:关键字参数name=‘lili’在位置参数18之前
>>> register('lili',sex='male',age=18,name='jack') #TypeError:形参name被重复赋值

3.1.3 默认值参数(形参)

在定义函数时,就已经为形参赋值,这类形参称之为默认参数,当函数有多个参数时,需要将值经常改变的参数定义成位置参数,而将值改变较少的参数定义成默认参数。例如编写一个注册学生信息的函数,如果大多数学生的性别都为男,那完全可以将形参sex定义成默认参数

 def register(name,age,sex='male'): #默认sex的值为male
    print('Name:%s Age:%s Sex:%s' %(name,age,sex))

定义时就已经为参数sex赋值,意味着调用时可以不对sex赋值,这降低了函数调用的复杂度

>>> register('tom',17) #大多数情况,无需为sex传值,默认为male
Name:tom Age:17 Sex:male
>>> register('Lili',18,'female') #少数情况,可以为sex传值female
Name:Lili Age:18 Sex:female

需要注意:
默认参数必须在位置形参之后
默认形参的值仅在函数定义阶段被赋值一次 ,且被赋予的是值的内存地址

>>> x=1
>>> def foo(arg=x):
    ...     print(arg)
... 
>>> x=5 #定义阶段arg已被赋值为1,此处的修改与默认参数arg无任何关系
>>> foo()
1

虽然默认值参数可以被指定任意类型,但是通常应设为不可变类型

def foo(n,arg=[]):    
     arg.append(n)    
     return arg    
foo(1)    
[1] 
foo(2)    
[1, 2] 
foo(3)    
[1, 2, 3]

每次调用是在上一次的基础上向同一列表增加值,修改如下

def foo(n,arg=None):    
     if arg is None:    
         arg=[]  # 在内部改变    
     arg.append(n)    
     return arg    
foo(1)    
[1] 
foo(2)    
[2] 
foo(3)    
[3]

四、 可变长度的参数(*与**的用法)

参数的长度可变指的是在调用函数时,实参的个数可以不固定,而在调用函数时,实参的定义无非是按位置或者按关键字两种形式,这就要求形参提供两种解决方案来分别处理两种形式的可变长度的参数

4.1 可变长度的位置参数

如果在最后一个形参名前加*号,那么在调用函数时,溢出的位置实参,都会被接收,以元组的形式保存下来赋值给该形参

>>> def foo(x,y,z=1,*args): #在最后一个形参名args前加*号
...     print(x)
...     print(y)
...     print(z)
...     print(args) # 元组
... 
>>> foo(1,2,3,4,5,6,7)  #实参1、2、3按位置为形参x、y、z赋值,多余的位置实参4、5、6、7都被*接收,
                         以元组的形式保存下来,赋值给args,即args=(4, 5, 6,7)

1
2
3
(4, 5, 6, 7)

如果我们事先生成了一个列表,仍然是可以传值给args的 。*可以用在实参中,实参中带*,先将*后的值( 即可迭代对象)打散(拆解)成位置实参

>>> def foo(x,y,*args):
...     print(x)
...     print(y)
...     print(args)
... 
>>> L=[3,4,5]   # L可以是任意可迭代对象,列表,元组,字符串,字典
>>> foo(1,2,*L)  # *L就相当于位置参数3,4,5, foo(1,2,*L)就等同于foo(1,2,3,4,5)
1
2
(3, 4, 5)


>>> l='hello' # 字符串
>>> foo(1,2,L) 
1
2
('h', 'e', 'l', 'l', 'o')

注意:如果在传入L时没有加*,那L就只是一个普通的位置参数了

>>> foo(1,2,L) #仅多出一个位置实参L
1
2
([1, 2, 3],)


如果形参为常规的参数(位置或默认),实参仍可以是*的形式

>>> def foo(x,y,z=3):
...     print(x)
...     print(y)
...     print(z)
... 
>>> foo(*[1,2]) #等同于foo(1,2)
1
2
3

形参与实参中都带*

def func(x,y,*args): 
    print(x,y,args)

func(1,2,[3,4,5,6]) # args=([3,4,5,6],)
func(1,2,*[3,4,5,6]) # args=(3,4,5,6)
func(*'hello') # func('h','e','l','l','o') args=('l','l','o')

如果我们想要求多个值的和,*args就派上用场了

>>> def add(*args):
...     res=sum(args)
...     return res
... 
>>> add(1,2,3,4,5)
15

4.2 可变长度的关键字参数

如果在最后一个形参名前加**号,那么在调用函数时,溢出关键字参数,都会被接的收,以字典的形式保存下来赋值给该形参

>>> def foo(x,**kwargs): #在最后一个参数kwargs前加**
...     print(x)        
...     print(kwargs)   
... 
>>> foo(y=2,x=1,z=3) #溢出的关键字实参y=2,z=3都被**接收,以字典的形式保存下来,赋值给kwargs
1
{'z': 3, 'y': 2}

如果我们事先生成了一个字典,仍然是可以传值给kwargs的 . **可以用在实参中(后跟的只能是字典),实参中带 **,先把 **后的值打散成关键字实参

>>> def foo(x,y,**kwargs):
...     print(x)
...     print(y)
...     print(kwargs)
... 
>>> dic={'a':1,'b':2} 
>>> foo(1,2,**dic) #**dic就相当于关键字参数a=1,b=2,foo(1,2,**dic)等同foo(1,2,a=1,b=2)
1
2
{'a': 1, 'b': 2}

注意:如果在传入dic时没有加**,那dic就只是一个普通的位置参数了

>>> foo(1,2,dic) #TypeError:函数foo只需要2个位置参数,但是传了3个
  • 1

如果形参为常规参数(位置或默认),实参仍可以是**的形式

>>> def foo(x,y,z=3):
...     print(x)
...     print(y)
...     print(z)
... 
>>> foo(**{'x':1,'y':2}) #等同于foo(y=2,x=1)
1
2
3

形参与实参中都带**

def func(x,y,**kwargs):
    print(x,y,kwargs)

func(y=222,x=111,a=333,b=444)   # kwargs= {'a': 333, 'b': 444}
func(**{'y':222,'x':111,'a':333,'b':4444})   # kwargs= {'a': 333, 'b': 4444}

4.3 组合使用* 与**

综上所述所有参数可任意组合使用,但定义顺序必须是:位置参数、默认参数,*args、命名关键字参数、 ** kwargs
可变参数*args与关键字参数**kwargs通常是组合在一起使用的,如果一个函数的形参为*args与**kwargs,那么代表该函数可以接收任何形式、任意长度的参数,在该函数内部还可以把接收到的参数传给另外一个函数(这在之后装饰器的实现中大有用处)

>>> def func(x,y,z):
...     print(x,y,z)
... 
>>> def wrapper(*args,**kwargs):
...     func(*args,**kwargs)
...
>>> wrapper(1,z=3,y=2)
1 2 3

解释下述形式,即函数wrapper的参数特点是什么

def index(x,y,z):
    print(x,y,z)

def wrapper(*args,**kwargs): # args=(1,) kwargs={'y':2,'z':3}   # 形参中含有*,** 会将其包装
 	index(*args,**kwargs)
    # index(*(1,),**{'y':2,'z':3}) # 实参中含有*,**,会将其打散
    # index(1,z=3,y=2)

wrapper(1,z=3,y=2)

按照上述写法,在为函数wrapper传参时,其实遵循的是函数index的参数规则,调用函数wrapper的过程分析如下:

  1. 位置实参1被接收,以元组的形式保存下来,赋值给args,即args=(1,),关键字实参z=3,y=2被**接收,以字典的形式保存下来,赋值给kwargs,即kwargs={‘y’: 2, ‘z’: 3}
  2. 执行index(args,kwargs), 即index((1,),* {'y': 2, 'z': 3}),等同于func(1,z=3,y=2)
    提示: *args、**kwargs中的args和kwargs被替换成其他名字并无语法错误,但使用args、kwargs是约定俗成的。

注意:python中所有值的传递,传递的都是不是值本身,而是值的引用,即内存地址

4.4. 命名关键字参数(了解)

#  命名关键字参数:在定义函数时,*后定义的参数,如下所示,称之为命名关键字参数
# 特点:
# 1、命名关键字实参必须按照key=value的形式为其传值
# def func(x,y,*,a,b): # 其中,a和b称之为命名关键字参数
#     print(x,y)
#     print(a,b)
# 
# # func(1,2,b=222,a=111)
# 
# 示例
# def func(x,y,*,a=11111,b):
#     print(x,y)
#     print(a,b)
# 
# func(1,2,b=22222)

4.5  各种形参的组合使用
形参混用的顺序:位置形参,默认值形参,*args,命名关键字形参,**kwargs
# def func(x,y=111,*args,z,**kwargs):
#     print(x) # 1
#     print(y) # 1
#     print(args) #(2, 4)
#     print(z)  # 5
#     print(kwargs) #  {'name': 'xioawang'}

func(1,*[1,2,4],z = 5,**{'name':'xioawang'})
      

# 实参混用的顺序:
# def func(x,y,z,a,b,c):
#     print(x)
#     print(y)
#     print(z)
#     print(a)
#     print(b)
#     print(c)

# func(111,y=222,*[333,444],**{'b':555,'c':666})  # 会报错
# func(111,y=222,333,444,b=555,c=666)

# func(111,*[333,444],a=222,**{'b':555,'c':666})  # 正确
# func(111,333,444,a=222,b=555,c=66)

# func(111,*[333,444],**{'b':555,'c':666},a=222,)  # 正确
#func(111,3333,4444,b=555,c=666,a=222)

 

深入解析 Python 中的函数参数类型详解 参数类型定义方式调用方式特点位置参数​​​​简单直观,但需注意参数顺序默认值参数​​​​func(1)​​​ 或 ​​提供默认值,可减少调用复杂性命名参数​​​​提高代码可读性,避免顺序错误可变参数​​​​灵活处理任意数量的参数强制命名参数​​​​强制使用命名方式,代码更加明确。 阅读详情

相关推荐

Python函数参数详解:从位置参数到灵活调用的艺术

Python函数参数使用精要 Python函数参数可分为位置参数和关键字参数两种基本类型,遵循"位置参数在前,关键字参数在后"的惯例。位置参数必须按顺序提供,而关键字参数通过参数名指定,可提高代码可读性。 Python还提供了灵活的*args和**kwargs机制: *args收集多余位置参数到元组 **kwargs收集多余关键字参数到字典 实用示例展示了如何构建函数执行器,它能够: 执行任意函数并记录参数 捕获并返回执行结果 可扩展添加性能计时等额外功能 这种参数处理方式使Python

tanyyinyu的博客 1311

函数的参数(形参与实参)的理解

函数的参数 实际参数(实参) 真实传给函数的参数,叫实参。实参可以是:常量、变量、表达式、函数等。无论实参是何种类型的量,在进行函数调用时,它们必须有确定的值,以便把这些值传送给形参。 形式参数(形参) 形式参数是指函数名后括号中的变量。因为形式参数只有在函数被调用的过程中才实例化(分配内存单元),所以叫形式参数。形式参数当函数调用完成之后就自动销毁了。因此形式参数只在函数中有效。 我们写...

didi1663478999的博客 3万+

Python 函数参数详解

函数体函数通过 def关键字定义,后面跟着函数名称和一对圆括号,圆括号内是函数的参数列表。函数可以有多个参数,也可以没有参数。print(add(3, 5)) # 输出: 8位置参数:按顺序传递给函数。默认参数:提供默认值,调用时可以选择性传递。可变参数(*args和**kwargs:允许函数接受任意数量的位置参数和关键字参数。参数传递:不可变对象按值传递,可变对象按引用传递。解包操作:使用和**可以解包列表或字典并传递给函数。

m0_62599305的博客 819

Python函数及参数详解

引言 随着程序功能的增多,代码量随之增大,此时仍不加区分地把所有功能的实现代码放到一起,将会使得程序的组织结构不清晰,可读性变差,且程序中需要频繁使用同一功能时,只能重复编写该功能的实现代码,日积月累,程序将变得冗长,并且当某一功能需要修改时,又不得不找出所有定义及使用这段功能的地方修改之,管理维护的难度极大。 到底该如何解决提出的这些问题呢?我们完全可以从现实生活中找到简化程序设计的方案:比如一个修理工会事先准备好螺丝刀、锤子等工具,这样在进行修理的过程中,需要用到拧螺丝的功能时就直接拿来螺丝刀使用,需要

人丑就要多读书的博客 671

一篇讲透:豆包、元宝、DeepSeek、Kimi、WorkBuddy,职场里到底怎么分工

这篇文章深入分析了当前主流AI工具(WorkBuddy、豆包、腾讯元宝、DeepSeek、Kimi)的特点和使用场景,帮助读者根据不同工作需求选择合适的AI助手。核心观点包括: AI工具各有所长:豆包适合快速创作初稿,元宝擅长信息检索整理,DeepSeek强于逻辑分析,Kimi专精文本处理,WorkBuddy则更适合任务推进和成果交付。 使用前需明确需求:是要创意发散、信息整理,还是任务执行?不同阶段应选用不同工具组合。 提供了6个具体职场场景的解决方案,包括文章创作、课程设计、会议纪要等,并给出详细的操作

weixin_39284145的博客 1万+

智能垃圾桶改造指南:树莓派+垃圾分类模型部署全记录(含数据集获取)

本文提供了一份详尽的智能垃圾桶DIY改造指南,核心是利用树莓派部署轻量化的YOLOv8垃圾分类模型。内容涵盖从数据集获取、模型训练与OpenVINO量化优化,到硬件组装、电路连接及软件集成的全流程,旨在帮助创客和爱好者以低成本实现一个能自动识别垃圾并分类的AIoT原型系统。

k6l7m8n9的博客 508

python中返回函数

''' 请编写一个函数calc_prod(lst),它接收一个list,返回一个函数,返回函数可以计算参数的乘积。 ''' from functools import reduce def calc_prod(lst): def lazy_prod(): def f(x, y): return x * y ret...

春天的波菜 817

大疆前端开发面试题及参考答案(4万字长文)

在前端项目中,难点和性能优化的挑战无处不在。比如在处理复杂交互界面时,实现流畅的动画效果和实时反馈就是一大难点。当界面中有大量元素需要同时进行交互和动态更新,像电商平台的商品筛选和排序功能,不仅要保证操作的即时响应,还要确保界面在各种设备和网络环境下的稳定性,这就需要对事件处理、DOM 操作和数据更新机制有深入理解。在性能优化方面,首屏加载速度是常见的难点。当页面包含大量图片、脚本和样式文件时,如何合理地进行资源压缩、合并与缓存,以减少加载时间,是需要精心考虑的。

大模型大数据攻城狮的专栏 1152

python基础-函数详解

文章目录python基础-函数详解一、什么是函数二、函数的作用三、定义函数四、函数的作用域和命名空间1.作用域(scope):变量生效的区域2.命名空间(namespace)五、调用函数1.函数递归:2.高阶函数:五、函数中的参数六、python函数的注意事项 python基础-函数详解 一、什么是函数 函数:就是一套定义好的流程,输入数据得到结果。函数之间可能相互独立,也可能一个函数的输入是另一...

TianYao 4266

OpenStack [ compute_id ] 设计上的小缺陷

而 nova 代码中硬编码(或默认配置)将 compute_id 放在 site-packages 目录,属于 设计上的小缺陷—— 把 “库安装目录” 和 “运行时数据目录” 混在一起了,才导致需要临时调整这个目录的权限。# 配置项说明:node_identity_file 是 nova 用于指定节点标识文件路径的官方配置项,优先级高于代码中的默认路径。自定义 compute_id 路径,指向 /var/lib/nova/ 目录下的 compute_id 文件;

求知若渴,虚心若愚。 491

Figma 设计稿转前端代码:Cursor 实现 UI 还原的 4 种精准映射方法

揭示 Figma 设计稿转前端代码失效的根本原因在于四层语义未对齐(像素→布局、视觉→样式、交互→行为、意图→架构),提出以语义标注为核心的结构化喂数据方法,详解通过图层命名、Description 字段和 Markdown 上下文锚点实现高精度 React 组件生成,并给出可落地的避坑指南与实测提

weixin_42545292的博客 138

Python 函数

1、函数的创建和调用 def calc(a,b): c=a+b return c result=calc(10,20) print(result) 2、函数的参数传递 def calc(a,b):#a,b称为形式参数,简称形参,形参的位置在函数的定义处 a:10 b:20 c=a+b return c #顺序传递,按照参数的顺序依次赋值 result=calc(10,20) #10,20称为实际参数的值,实参的位置是函数的调用处 print(r.

ytx1098678572的博客 1087

C#解析基恩士(KEYENCE)PLC数据:KV协议通信与实时监控实现

KV协议是基恩士PLC使用的一种专用通信协议,通常用于与上位机进行数据交换。KV协议通过RS-232C、RS-485、Ethernet等接口与上位机通信,支持多种数据类型的读写,包括但不限于位、字、双字、浮点数等。简洁易用:KV协议的通信格式简单,易于实现。支持多种数据类型:支持位数据、字数据、定长字符串等。高效实时性:能够提供较高的实时数据交换性能,适合实时监控应用。本文介绍了如何通过C#与基恩士KV系列PLC进行通信,实现数据的解析和实时监控功能。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1806

定义一个没有参数的函数、输出python3次_Python函数参数详解,三天让你掌握python,不再是小白

Python函数参数详解,三天让你掌握python,不再是小白

weixin_39716043的博客 2801

DMDiff(2025):一种基于SAR光学数据融合的双分支多模态条件引导扩散模型-k学长深度学习专栏

DMDiff提出了一种基于扩散模型的多模态遥感图像去云方法,通过双分支网络分别提取SAR的结构信息和光学图像的光谱特征,再利用跨模态注意力机制实现特征融合。创新性地采用IAP策略直接预测无云图像而非噪声,有效解决了传统方法在遥感图像处理中易出现的光谱失真问题。实验表明该方法在PSNR等指标上显著优于现有技术,但存在计算量大、生成速度慢等不足。未来可结合加速采样策略和几何约束进一步优化。

421

R语言数据可视化:绘制世界地图的两种方案

本文介绍了两种使用R语言绘制世界地图的方案:包含边界边框和不包含边界边框。无论您选择哪种方案,使用ggplot2包和相关的地理数据包,我们可以轻松地绘制出漂亮的世界地图。R语言提供了丰富的包和函数,使我们能够轻松地绘制世界地图,并根据需求添加边界边框。在本文中,我将介绍两种绘制世界地图的方案:一种包含边界边框,一种不包含边界边框。在上述代码中,我们使用了与方案一相同的数据准备和地图绘制步骤,但省略了添加边界边框的代码。函数的调用,我们可以绘制不包含边界边框的世界地图。方案二:绘制不包含边界边框的世界地图。

CodeMaven的博客 2225

Python函数参数传递

函数传参,实参与形参的传递(一起努力,咱们顶峰相见)

精益求精,永无止境,永远在路上! 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Python 函数参数传递机制(详解)

值得指出的是,主程序中的 dw 是一个引用变量(也就是一个指针),它保存了字典对象的地址值,当把 dw 的值赋给 swap() 函数的 dw 参数后,就是让 swap() 函数的 dw 参数也保存这个地址值,即也会引用到同一个字典对象。将主程序中的 a、b 变量作为参数值传入 swap() 函数,实际上是在 swap() 函数栈区中重新产生了两个变量 a、b,并将主程序栈区中 a、b 变量的值分别赋值给 swap() 函数栈区中的 a、b 参数(就是对 swap() 函数的 a、b 两个变量进行初始化)。

梁辰兴的博客 2314

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

python函数参数详解

调用函数时,Python语言必须将函数调用中的每个实参都关联到函数的相应形参。最简单的关联方式是基于实参的顺序,这种关联方式被称为位置参数。位置形参:在定义函数时,按照从左到右的顺序依次定义形参位置实参:在调用函数时,按照从左到右的顺序依次传入实参示例4:通过位置参数输出学生的成绩print(f'语文:{a},数学:{b},英语{c}')语文:88,数学:66,英语95对于位置参数,在调用函数时,必须按照顺序输入全部的实参。实参的数量不能多也不能少,顺序也必须和形参保持一致。

2501_92499985的博客 1083

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Python学习——函数参数详解

本文旨在深入探讨Python函数中的参数传递机制及其在不同场景下的应用。为此,我们系统地分析了函数定义中各类参数类型及其使用方法,并通过实例展示了它们的特点和应用场景。

Qhumaing的博客 1532

python函数参数定义顺序_Python函数参数详解

Python函数参数详解形参与实参什么是形参在定义函数阶段定义的参数称之为形式参数,简称形参,相当于变量名。什么是实参在调用函数阶段传入的值称为实际参数,简称实参。相当于"变量值"的内存地址。(Ps:Python中的所有传值都是传递的内存地址,因此Python中的传值也被称为引用传值。)实参与形参的关系1.在调用阶段,实参("变量值的内存地址引用")会绑定给形参("变量名")2.这种绑定关系只能在...

weixin_39573512的博客 758

Python函数参数详解:从基础到高级用法

本文将用通俗易懂的方式,结合代码示例和图表,全面讲解Python函数参数的详细知识点。请大家多评论交流技术

x15514104477的博客 1631

python vec函数_详解Python 函数参数的拆解

本文为阅读 《Python Tricks: The Book》一书的 3.5 Function Argument Unpacking 的笔记与扩充理解。函数参数拆解是定义可变参数(VarArgs) *args 和 **kwargs 的反向特性。*args 和 **kwars 是函数可定义一个形参来接收传入的不定数量的实参。而这里的函数参数拆解是形参定义多个,在调用时只传入一个集合类型对象(带上 *...

weixin_34635170的博客 3005

Python 函数参数的五种类型详解

Python函数参数的五种类型详解:位置参数是最基础的传参方式,需注意参数顺序和数量;关键字参数通过参数名传递值,顺序可调整;默认参数使函数更灵活,但需避免使用可变对象作为默认值;args处理不定数量的位置参数;**kwargs接收任意关键字参数。实际开发中可组合使用这些参数,遵循"位置参数→默认参数→args→**kwargs"的顺序。建议优先使用位置和关键字参数,合理使用默认参数,谨慎使用可变参数以保持代码可读性。掌握这些参数类型能显著提升代码的灵活性和优雅度。

余子越的博客 1004

Python函数参数中的*

xx用元组收集位置参数,**xx以字典打包关键字参数。(笔记模板由python脚本于2024年10月23日 06:52:11创建,本篇笔记适合Python基础的coder翻阅)【学习的细节是欢悦的历程】Python官网Free:大咖免费“圣经”教程python 完全自学教程,不仅仅是基础那么简单……自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。——华罗庚HOT好文力荐Python函数参数中的*

m0_57158496的博客 1368
上一篇: Python大佬 | 菜鸟进阶必备的九大技能
下一篇: 带你学习Python-基础知识的框架梳理
pythonputao
博客等级 码龄6年 60粉丝 111原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值