#### 定义函数
```python
#定义函数
def function():
    print("hello world")
#调用函数
function()
#输出结果
hello world
```
#### 函数参数
```python
#1.函数参数类型:实参、形参和无参数
#2.实参:函数调用时候参数,实参可以传递任意类型的对象
#3.形参:函数定义时的参数名,没有实际意义
def function(self):
    print("%s"%self)
function("hello world")
#"hello world"为实参,self为形参
#输出结果
hello world
```
#### 参数类型
##### 位置参数
```python
#1.位置参数:调用函数时根据函数定义的参数位置来传递参数
#2.调用函数时传入实际参数的数量和位置都必须和定义函数时保持一致
#3.实参和形参数量必须一致
result=0
def function(a,b):
    result = a + b
    print(result)
function(10,20)  
#输出结果
30
```
##### 关键字参数
```python
#1.不按照形参定义的顺序去传递,而直接根据参数名去传递参数
#2.关键字参数可以按照不同顺序排序
#3.实参和形参数量必须一致
result=0
def function(a,b,c):
    result = a + b + c
    print(result)
function(c=10,a=5,b=15)
#输出结果
30
```
##### 默认参数
```python
#1.为参数提供默认值,调用函数时可传可不传该默认参数的值,传入参数会代替默认值
#2.默认值参数必须放在没有默认值参数之后
def function(name,sex="boy"):
 print("名字是:%s,性别是:%s"%(name,sex))
function("zahng")#没有指定sex,会使用默认值boy
function("zhang","girl")#指定sex,使用指定的参数girl
#输出结果
名字是:zahng,性别是:boy
名字是:zhang,性别是:girl
```
##### 不定长参数(*args)
```python
#1.在定义函数时,可以在形参前边加上一个*,这样这个形参将会获取到所有的实参(位置参数)(args可以为其他str,通常使用*args)
#2.将所有的实参保存到一个元组中
#3.带*的形参只能有一个,可以和其他参数配合使用,只能接收位置参数,而不能接收关键字参数
#4.不定长参数(*args)不是必须写在最后,若果写在其他形参之前,不定长参数(*args)后的所有参数,必须关键字参数跟随在位置参数后面,以关键字参数的形式传递
#5.如果在形参的开头直接写一个*,则要求我们的所有的参数必须以关键字参数的形式传递
def function(a,b,*args):
 print(a,b,args)
function(2,3,4,5,6,7,8,9)
#输出结果
2 3 (4, 5, 6, 7, 8, 9)
def function(*args,a,b):
 print(a,b,args)
function(4,5,6,7,8,9,a=2,b=3)#a,b形参,必须要以关键字参数传递
#输出结果
2 3 (4, 5, 6, 7, 8, 9)
形参开头直接*(*不接受参数)
def function(*,a,b):
 print(a,b)
function(a=2,b=3)
#输出结果
2,3
```
##### 不定长参数(**kwargs)
```python
#1.在定义函数时,可以在形参前边加上2个**,这样这个形参将会获取到所有的关键字(args可以为其他str,通常使用*args)
#2.**形参可以接收关键字参数,它会将这些参数统一保存到一个字典中,字典的key就是参数的名字,字典的value就是参数的值
#3.**形参只能有一个,并且必须写在所有参数的最后
def function(a,b,**kwargs):
    print(a,b,kwargs)
function(a=1,b="qaq",c=4,d="qwer",e=5)
#输出结果
1 qaq {'c': 4, 'd': 'qwer', 'e': 5}
```
##### 参数组合
```python
#位置顺序:位置参数、默认参数、关键字参数、不定长参数
def function(a,b=10,*args,**kwargs):
    print(a,b,args,kwargs)
function(2,12,32,"aa",name="kimi",age=8)
```
 

Python---函数参数---王伟的更多相关文章

  1. Python函数参数默认值的陷阱和原理深究"

    本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 本博客已经迁移至: http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文 ...

  2. python函数参数的pack与unpack

    python函数参数的pack与unpack 上周在使用django做开发的时候用到了mixin(关于mixin我还要写一个博客专门讨论一下,现在请参见这里),其中又涉及到了一个关于函数参数打包(pa ...

  3. Python 关于Python函数参数传递方式的一点探索

    关于Python函数参数传递方式的一点探索 by:授客 QQ:1033553122 实践代码 #!/usr/bin/env python # -*- coding:utf-8 -*- __author ...

  4. python 函数参数介绍

    python 函数参数介绍 python 使用过程总,总会遇到 *args,**kw形式的参数,总是一头雾水,而且网上介绍的或是叫法不一,为此专门深入实践进而了解了函数参数的使用 具体请看代码 #-* ...

  5. python函数参数类型及其顺序

    根据inspect模块官文文档中关于函数参数类型的相关说明,python函数参数共有五种类型,按顺序分别为:POSITIONAL_ONLY.POSITIONAL_OR_KEYWORD.VAR_POSI ...

  6. Python 函数参数类型大全(非常全!!!)

    Python 函数参数类型大全(非常全!!!) 1.在python编写程序里面具有函数文档,它的主要作用是为了让别人可以更好的理解你的函数,所以这是一个好习惯,访问函数文档的方式是: MyFuncti ...

  7. Python函数参数默认值的陷阱和原理深究(转)

    add by zhj: 在Python文档中清楚的说明了默认参数是怎么工作的,如下 "Default parameter values are evaluated when the func ...

  8. python函数-参数

    python函数-参数 实验室 # 演示形参是可变类型 def register(name, hobby, hobby_list=[]): hobby_list.append(hobby) print ...

  9. 详解Python函数参数定义及传参(必备参数、关键字参数、默认可省略参数、可变不定长参数、*args、**kwargs)

    详解Python函数参数定义及传参(必备参数.关键字参数.默认可省略参数.可变不定长参数.*args.**kwargs) Python函数参数传参的种类   Python中函数参数定义及调用函数时传参 ...

  10. Python函数参数详解

    Python函数参数详解 形参与实参 什么是形参 在定义函数阶段定义的参数称之为形式参数,简称形参,相当于变量名. 什么是实参 在调用函数阶段传入的值称为实际参数,简称实参.相当于"变量值& ...

随机推荐

  1. 应用安全 - 社工 - 大数据 - Fofa - 汇总

    搜索语法 title=”abc”   header=”abc”  body=”abc”  domain=”xx.com”  host=”.xx.cn”  port=”443”     ip=”1.1. ...

  2. 【Linux开发】linux设备驱动归纳总结(十三):1.触摸屏与ADC时钟

    linux设备驱动归纳总结(十三):1.触摸屏与ADC时钟 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

  3. centos7基础安装

    基础: hostname xxvim /etc/hostname systemctl stop firewalld systemctl disable firewalldsetenforce 0gre ...

  4. 2019牛客暑期多校训练营(第一场)-E(DP)

    题目链接:https://ac.nowcoder.com/acm/contest/881/E 题意:求可分解成n个AB和m个BA的字符串的个数. 思路: 首先根据贪心思想,前n个A可作为AB的A,后m ...

  5. Partition to K Equal Sum Subsets

    Given an array of integers nums and a positive integer k, find whether it's possible to divide this ...

  6. 关于8086中的jmp near ptr原理

    在8086汇编语言中.jmp 0x7c41 自己跳转到自己的位置,是一个死循环代码.对应的机器指令是e9fdffe9是跳转  fdff其实应该是fffd 也就是-3的补码. 执行到e9fdff相当于把 ...

  7. 小记---------sparkRDD的Transformation 和 Action 及案例 原理解释

    RDD :弹性分布式数据集:是一个容错的.并行的数据结构,可以让用户显式地将数据存储到磁盘或内存中,并控制数据的分区   RDD是Spark的核心数据结构,通过RDD的依赖关系形成Spark的调度顺序 ...

  8. 手写Spring MVC

    闲及无聊 又打开了CSDN开始看一看有什么先进的可以学习的相关帖子,这时看到了一位大神写的简历装X必备,手写Spring MVC. 我想这个东西还是有一点意思的 就拜读了一下大佬的博客 通读了一遍相关 ...

  9. centos 7 源码安装 mysql 5.6

    下载 mysql 安装包 $ wget https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.44.tar.gz # or $ curl -O ht ...

  10. C++ 友元(friend关键字)、类中的重载、操作符重载(operator关键字)

    C++ 中友元的用法: 1.在类中使用friend关键字声明 2.类的友元可以是其它类或者具体函数 3.友元不是类的一部分 4.友元不受类中访问级别的限制 5.友元可以直接访问具体类中的所有成员. 友 ...