1.形参变量和实参

形参变量:只有在被调用时才分配内存单元,在调用结束时,即释放所分配的内存单元,因此,形参只在函数内有效,函数调用结束返回主调用函数后则不能再使用该形参变量。

实参:可以是常量,变量,表达式等,无论实参是何种类型的量,在进行函数调用时,它们都必须有稳定的值,因此应预先用赋值,输入等办法使参数获得稳定值。

例:def calc(x,y):

             res = x*y

             return res

       c= calc(a,b)

       print(c)

此时x和y为形参变量,a和b为实参

2.非固定参数

#元祖形式(*args)

如果参数中出现*,传递的参数就不再是个固定的个体了,传过来的所有参数打包成一个元祖

方法一:

def   send_alarm(msg,*users):  #带*参数一般都用*args表示

        for  i  in users:

        print("报警",i)

send_alarm("aaa","alex","gao","hong")  #此时的"alex","gao","hong"都传到了*users中

输出为:

报警",alex

报警",gao

报警",hong

#方法二:
send_alarm("aaa",*["alex","gaohui","hong"])  #此时的"alex","gaohui","hong"都传到了*user中

def  alarm(msg,*user,age):
  for i in user:
  print("aaa",i)
alarm("aaa","alex","gaohui","hong",age=22)#当位置参数在带有*参数的后面时,实参必须要用关键参数

#元祖和字典形式

def func(name,*args,**kwargs):
  print(name,args,kwargs)
func("aa",1,2,3,4)#此时1,2,3,4全部属于args元祖里面
打印结果: aa,(1,2,3,4)
func("aa",1,2,3,age=23,old="bb")#此时1,2,3属于args元祖里面,age=23,old="bb"属于kwargs字典里面
打印结果: aa,(1,2,3,4){"age"=23,"old"="bb"}
d={"degree":"primary school"}
func("aa",d)#此时d这个字典在args元祖里面
打印结果:aa,({"degree":"primary school"},)
func("aa",**d)#此时d这个字典在kwargs字典里面
打印结果:aa,(),{
"degree":"primary school"}

3.关键参数

关键参数定义规则:

1.关键参数不能放在位置参数前面

print("aaa",job="python",21)此时位置参数21放在了job="python"关键参数后面,所以会报错

2.关键参数被定义了一个量以后,不能再被定义第二个量

print("aaa",age=23,21)此时关键参数已经给age赋过值,再赋21会报错

正确的方式:def introduct(name,age,job,country="cn"):

           print("-----introduct-------")
     print(name,age,country,job)       print("aaa",age=23,"job"="salary")

4.默认参数

def introduct(name,age,job,country="cn")
print("-----introduct-------")
print(name,age,job,country) introduct("gaohui",21,"python")
introduct("hongyan",23,"java")
introduct("gaohuiaa",23,"it","python1")

此时的country就是默认参数,默认参数必须放在非默认参数后面,当你不想要参数为默认值时,可以再对应的位置写值,此时默认参数的值就会被替换。

总结:

排列顺序:位置参数 关键参数 默认参数

python参数的更多相关文章

  1. Python参数笔记

    Python参数 1. 普通参数 必须要传入和定义时个数相同的参数 def miao(acfun, bilibili): print(acfun, bilibili) miao(11, 22) > ...

  2. Python参数基础

    Python参数基础 位置参数 ​ 通过位置进行匹配,把参数值传递给函数头部的参数名称,顺序从左到右 关键字参数 ​ 调用的时候使用参数的变量名,采用name=value的形式 默认参数 ​ 为没有传 ...

  3. Python参数类型以及实现isOdd函数,isNum函数,multi函数,isPrime函数

    Python参数类型以及实现isOdd函数,isNum函数,multi函数,isPrime函数 一.Python参数类型 形参:定义函数时的参数变量. 实参:调用函数时使用的参数变量. 参数传递的过程 ...

  4. python 参数定义库argparse

    python 参数定义库argparse 这一块的官方文档在这里 注意到这个库是因为argparse在IDE中和在ipython notebook中使用是有差异的,习惯了再IDE里面用,转到ipyth ...

  5. python 参数类型理解

    简介 大家都知道,在java中,函数或者方法的参数在调用时必须对其进行传参操作,也就是所谓的必选参数,也可以称为位置参数,除此之外,python还拥有其他语言不具有的一些参数类型,以下将进行一一介绍. ...

  6. python 参数

    摘自:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00137473844933 ...

  7. python 参数的组合

    现在我们知道python定义函数的参数类型有:必选参数 默认参数 可变参数 关键字参数 但是在我们日常中我们是可以组合使用这些参数的:但是使用的时候,参数定义是有顺序的 定义的顺序必须是:必选参数,默 ...

  8. <转>Python 参数知识(变量前加星号的意义)

    csdn上的牛人就是多,加油 —————————————————————————— 过量的参数 在运行时知道一个函数有什么参数,通常是不可能的.另一个情况是一个函数能操作很多对象.更有甚者,调用自身的 ...

  9. python参数传递方式

    原文地址:http://www.cnblogs.com/zhaopengcheng/p/5492183.html python中一切皆对象,函数中参数传递的是对象的引用. 1在函数中改变变量指向的对象 ...

随机推荐

  1. Android之ListView动态添加数据(SQLiteOpenHelper类添加数据)

    一.SQLiteOpenHelper类: 这次我们通过sqlite来动态添加数据,接下来我们创建一个openHelper.java,在前面sqlite博客中我们已经详细的讲了SQLite的创建及使用等 ...

  2. 基于MNIST数据集使用TensorFlow训练一个包含一个隐含层的全连接神经网络

    包含一个隐含层的全连接神经网络结构如下: 包含一个隐含层的神经网络结构图 以MNIST数据集为例,以上结构的神经网络训练如下: #coding=utf-8 from tensorflow.exampl ...

  3. 导出Excel实现 (ASP.NET C# 代码部分)

    背景: 实现导出Excel功能. 技术: ASP.NET  , 采用`Aspose.Cells`第三方组件, C# 实现通用部分. 根据前台Ext Grid完成导入Excel中文列与实际存储列的对应关 ...

  4. linux添加zabbix service并开机自动启动

    最近有个数据库相关操作后需要重启操作系统,重启后发现zabbix监控一直没有数据,迷了半天原来zabbix压根就没有启动.想了半天决定把zabbix添加到系统服务,并设置开机启动. 1.按一定的规则编 ...

  5. IDEA查看类继承关系及生成类关系图

    1.在想要查看的类上按 Ctrl + H -> Diagrams -> Show Diagrams -> Java Class Diagrams -> Show Impleme ...

  6. 性能测试day05_Jmeter学习

    今天来学习下jmeter这个性能测试工具,虽然说性能测试最主要的是整个性能的思路,但是也少不了工具的帮忙,从以前主流的LR到jmeter的兴起,不过对于性能测试来说,个人感觉jmeter比较适合接口性 ...

  7. leetcode76

    class Solution: def minWindow(self, s: str, t: str) -> str: n = len(s) if n==0: return "&quo ...

  8. ajax用FormData方式提交

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. Navicat for MySQL使用

    Navicat for MySQL使用 导出数据库表与结构 新数据库导入

  10. [PHP]误读支付宝接口可能引发的乌龙

    ------------------------------------------------------------------------------------ 之所以发现这个坑,源起项目中的 ...