博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 函数的参数
阅读量:5988 次
发布时间:2019-06-20

本文共 1833 字,大约阅读时间需要 6 分钟。

python的函数参数

必选参数

默认参数

可变参数

关键字参数

 

下面分别简述:

(1)默认参数:

个人感觉这个默认参数就是一个固定参数,你要是不改变这个值,他就是固定的,好拗口

#!/usr/bin/env python

#Author:Big_Bao
def power(x,n=3):
    s = 1
    while n >= 1:
    s = s * x
    n = n-1
    return s
print power(3)

当然这里如果我们想要算出别的也行,比如说我们可以

print power(3,5)

计算出来的就是3^5

 

上面的这个例子其实就是调用了power(5,3),这个的x就是必选参数,n=3就是默认的参数。有了默认参数,就可以简化调用了

直接power(x)就行了

 

设置默认参数需要注意的有:

(1)默认参数在必选参数之后               WHY?

(2)如何设置默认参数

在函数中,如果有多个参数的时候,把变化大的参数放在前面,变化小的参数放在后面。变化小的参数可以作为默认参数

(3)默认参数必须指向不变对象。

使用默认参数的优点:降低了函数的调用难度

为什么要设计str、None这样的不变对象呢?因为不变对象一旦创建,对象内部的数据就不能修

改,这样就减少了由于修改数据导致的错误。此外,由于对象不变,多任务环境下同时读取对象不
需要加锁,同时读一点问题都没有。我们在编写程序时,如果可以设计一个不变对象,那就尽量设
计成不变对象。

 

(2)可变参数:

#!/usr/bin/env python

def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum

这里的   *numbers  代表的意思就是把numbers这个tuple的所有元素作为可变参数穿进去,

 

(3)关键字参数:

可变参数允许传入任意个字符,这些可变参数在函数调用的时候自动组装成一个tuple,但是关键字参数允许你传入任意个含参数名的参数,这些关键字参数在函数内部自动组装成一个dict

normal;">name: Jack age: 24 other: {'cdef person(name, age, **kw):

print 'name:', name, 'age:', age, 'other:', kw
函数 person 除了必选参数 name age 外,还接受关键字参数 kw 。在调用该函数时,可以只传
入必选参数:
>>> person('Michael', 30)
name: Michael age: 30 other: {}
也可以传入任意个数的关键字参数:
>>> person('Bob', 35, city='Beijing')
name: Bob age: 35 other: {'city': 'Beijing'}
>>> person('Adam', 45, gender='M', job='Engineer')
name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
关键字参数有什么用?它可以扩展函数的功能。比如,在 person 函数里,我们保证能接收
name age 这两个参数,但是,如果调用者愿意提供更多的参数,我们也能收到。试想你正在
做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义
这个函数就能满足注册的需求。
和可变参数类似,也可以先组装出一个dict,然后,把该dict转换为关键字参数传进去:
>>> kw = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, city=kw['city'], job=kw['job'])
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
当然,上面复杂的调用可以用简化的写法:
>>> kw = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, **kw)

关键字参数的意思就是说,你可以添加进去输入内容,也可以不输入,即做调查时有必选项,也有课选可不选选

 

转载地址:http://ebnlx.baihongyu.com/

你可能感兴趣的文章
脚本安装Discuz论坛(shell + Python 实现自动化安装)
查看>>
pcb线宽对信号的影响怎么处理?
查看>>
MapReduce阶段源码分析以及shuffle过程详解
查看>>
centos7 Mariadb 安装 与 二进制编译安装
查看>>
Linux文件、用户、组
查看>>
详解文件存储结构
查看>>
发展负责任的人工智能
查看>>
JavaScript的一道加法题?
查看>>
毕马威:应用于新一代智能汽车的芯片成为研发重点
查看>>
大数据学习之小白快速了解flume
查看>>
Android 组件宽度高度自适应
查看>>
oracle技术之oracle归档模式下的Rman备份集在异机恢复
查看>>
ASM 磁盘、目录的管理
查看>>
Oracle 11g RAC CRS-4535/ORA-1507
查看>>
Javascript你必须要知道的面试题
查看>>
讲英文直接变中文!微软口译技术大突破
查看>>
Shell多线程编程的实例
查看>>
我的友情链接
查看>>
C#中判断系统的网络连接状态的方法
查看>>
xenserver Pool和Host损坏后的灾难恢复(HBA存储)
查看>>