Python参数类型以及实现isOdd函数,isNum函数,multi函数,isPrime函数
Python参数类型以及实现isOdd函数,isNum函数,multi函数,isPrime函数
一、Python参数类型
形参:定义函数时的参数变量。
实参:调用函数时使用的参数变量。
参数传递的过程,就是把实参的引用传递给形参,使用实参的值来执行函数体的过程。
在 Python 中,函数的实参/返回值都是是靠引用来传递的。
在调用函数时,通常会传递参数,不同的参数处理不同的数据。一般有普通参数、默认参数、可变位置参数、可变关键字参数等。
1.普通参数:按照参数位置,依次传递参数。
def add(x,y):
return x + y print(add(3,4))

2.默认参数:定义函数时,可以给某个参数赋一个默认值。
调用函数时,如果没有传入默认参数的值,则在函数内部使用参数默认值。
要使用最常见的值作为默认值,从而简化函数的调用。
如果一个参数的值不能确定,则不应该设置默认值,具体的数值在调用函数时由外界传递。在调用函数时,如果有多个默认参数,需要指定参数名,这样解释器才能够知道参数的对应关系。
def add(x,y=1):
return x+y print(add(2))
print(add(2,3))

当一个参数有默认值时,调用时如果不传递此参数,会使用默认值。
注意:带默认值参数必须在不带默认值参数之后,否则会报错。
3.可变位置参数:
定义参数时参数前面加一个*,表示这个参数是可变的,可以接受任意多个参数,这些参数构成一个元组,只能通过位置进行参数传递。实例如下:
求一组数字的最大值,最小值,参数个数:
def max(*a):
m=n=a[0]
for x in a:
if x>=m:
m=x
else:
n=x
return m,n,len(a) b=input('输入若干数字,用空格隔开:').split()
print(max(*b))
运行结果:

关于最后一行:print(max(*b)),*b的作用是解包,否则传递的是整个列表。
如果不加*,则输出结果如下:

4.可变关键字参数:
定义参数时,在前面加**,表示这个参数可变,可以接受任意多个参数,这些参数构成一个字典,只能通过关键字参数传递。
参数的混合使用:
#位置参数可以和关键字参数一起使用。
#当位置可变参数和关键字可变参数一起使用的时候,可变位置参数必须在前。 def fn(*args,**kwargs):
print(args)
print(kwargs) fn(1,2,3,x=4,y=5)

#普通参数可以和可变参数一起使用,但是传参的时候必须匹配 def fn(x,y,*args,**kwargs):
print(x)
print(y)
print(args)
print(kwargs) fn(1,2,3,4,5,a=6,b=7)

#关键字可变参数不允许在普通参数之前
#下面的方式定义会出错 def fn(**kwargs,x):
print(x) fn(a=1,2)

#默认参数可以在可变位置参数之前
def fn(x=5,*args):
print(x)
fn()

参数解构(拆包):
参数解构发生在函数调用的时候,可变参数发生在函数定义的时候。
解构有两种形式:
1.解构符号:*,解构的对象:可迭代对象。解构后的结果:位置参数。
2.解构符号:**,解构的对象:字典。解构的结果:关键字参数。
关键字参数解构,key必须是str类型。
def add(a,b):
return a+b data = [4,3]
print(add(*data))#位置参数解构
data1 = {'a':3,'b':4}
print(add(**data1))#关键字参数解构

二、程序练习题
5.2 实现 isOdd()函数,参数为整数,如果整数为奇数,返回True,否则返回False。
实现代码如下:
def isOdd(num):
if num%2!=0:
return True
else:
return False
s=eval(input("请输入一个整数:"))
print(isOdd(s))
运行结果:


5.3 实现 isNum()函数,参数为一个字符串,如果这个字符串属于整数、浮点数或复数的表示,则返回True,否则返回False。
实现代码如下:
def isNum(num):
try:
n=type(eval(num))
if n==type(1):#输入为整型
return True
elif n==type(1.0):#输入为浮点型
return True
elif n==type(1+1j):#输入为复数
return True
except:
return False
n=input("请输入一个字符串:")
print(isNum(n))
运行结果:




5.4 实现 multi()函数,参数个数不限,返回所有参数的乘积。
实现代码如下:
def multi(s):
m = 1
for i in s:
m *= int(i)
return m
n=input("请输入若干整数:").split()
print(multi(n))
运行结果:

5.5 实现 isPrime()函数,参数为整数,要有异常处理。如果整数是质数,返回True,否则返回False。
实现代码如下:
def isPrime(num):
try:
num = eval(num)
if type(num) == type(1):#判断输入是否为整型
if num<=1:#判断一个数字是否是质数:质数是一个只能被自己和1整除的大于1的正整数。注意1不是质数。
return False
elif num==2:#2是质数,这里单独作为一个条件是为了与下面的判断条件区分
return True
else:
for i in range(2,num):#这里考虑的是大于2的正整数num,将这个数依次除以从2到num-1的整数进行取模运算,只要有一个数使它余数为0就说明它不是质数
if num % i == 0:
return False
else:
return True
else:
raise ValueError#引发ValueError异常
except ValueError:#传入参数异常处理
return "输入有误!请输入整数!"#这里没有使用print语句,如果没有给定return一个返回值,则函数的返回值为None
except:#其他异常处理
return "输入有误!请输入整数!"
n = input("请输入一个整数:")
print(isPrime(n))
运行结果:





Python参数类型以及实现isOdd函数,isNum函数,multi函数,isPrime函数的更多相关文章
- python 参数类型理解
简介 大家都知道,在java中,函数或者方法的参数在调用时必须对其进行传参操作,也就是所谓的必选参数,也可以称为位置参数,除此之外,python还拥有其他语言不具有的一些参数类型,以下将进行一一介绍. ...
- arcgis python 参数类型和含义
数据类型 datatype 关键字 描述 地址定位器 DEAddressLocator 用于地理编码的数据集,存储地址属性.关联的索引以及用于定义将地点的非空间描述转换为空间数据这一过程的规则. 地址 ...
- Python参数类型
位置参数 默认参数 可变参数 命名关键字参数 关键字参数 def position_only(a, b): print(a, b) def keyword(a='a', b='b'): print(a ...
- 性能测试工具LoadRunner28-LR之内部数据参数类型
Date/Time 在“Parameter type”中您可以选择Date/Time,即:用当前的日期/时间替换参数.要指定日期/时间的格式,可以从格式列表中选择一个格式,或者指定您自己的格式. [l ...
- python学习笔记12(函数三): 参数类型、递归、lambda函数
一.函数参数的类型 之前我们接触到的那种函数参数定义和传递方式叫做位置参数,即参数是通过位置进行匹配的,从左到右,依次进行匹配,这个对参数的位置和个数都有严格的要求.而在Python中还有一种是通过参 ...
- Python函数小结(1)--参数类型(*, ** 的区别), 闭包
刚开始学习python,python相对于java确实要简洁易用得多.内存回收类似hotspot的可达性分析, 不可变对象也如同java得Integer类型,with函数类似新版本C++的特性,总体来 ...
- Python 带参数的装饰器 [2] 函数参数类型检查
在Python中,不知道函数参数类型是一个很正常的事情,特别是在一个大项目里.我见过有些项目里,每一个函数体的前十几行都在检查参数类型,这实在是太麻烦了.而且一旦参数有改动,这部分也需要改动.下面我们 ...
- Python——可变类型与不可变类型(即为什么函数默认参数要用元组而非列表)
Python 的内建标准类型有一种分类标准是分为可变类型与不可变类型: 可变类型:列表.字典 不可变类型:数字.字符串.元组 因为变量保存的实际都是对象的引用,所以在给一个不可变类型(比如 int)的 ...
- python函数参数类型及其顺序
根据inspect模块官文文档中关于函数参数类型的相关说明,python函数参数共有五种类型,按顺序分别为:POSITIONAL_ONLY.POSITIONAL_OR_KEYWORD.VAR_POSI ...
随机推荐
- ArcGIS API for JavaScript小白入门
简单理解就是:通过js调用arcgis相关的方法和通过html引入css等资源来展示地图,代码如下: <!DOCTYPE html> <html> <head> & ...
- 百度地图在jsp页面加载大量轨迹导致地图卡顿
原画线方式: //存储大量点轨迹json数组:historyPathList for(var i=0;i<historyPathList.length-1;i++){ drawColorLine ...
- CODING 祝大家中秋快乐!
- Java_可变参数类型
Java方法中的可变参数类型,也称为不定参数类型,是一个非常重要的概念 举栗子 public class TestVarArgus { public static void dealArray(int ...
- Ubuntu18.04 卸载mysql5.7
查看MySQL的依赖项:dpkg --list|grep mysql 要删除上面的这些. 开始卸载: sudo apt-get autoremove --purge mysql-server sudo ...
- 【STM32-V7】STM32H743XIH6开发板,丰富软件资源,强劲硬件配置,大量软件解决方案持续更新中(2019-12-12)
说明: 争取做更多的实战性应用,分享更多的嵌入式技术,希望能在实际项目中帮到大家. (1)V7将大力加强对初学者的支持力度,已经更新至63章,下载链接,后37章和一批视频教程将加紧制作. (2)事隔五 ...
- 阿里钉钉技术分享:企业级IM王者——钉钉在后端架构上的过人之处
本文引用了唐小智发表于InfoQ公众号上的“钉钉企业级IM存储架构创新之道”一文的部分内容,收录时有改动,感谢原作者的无私分享. 1.引言 业界的 IM 产品在功能上同质化较高,而企业级的 IM 产品 ...
- 解决tail命令提示“tail: inotify 资源耗尽,无法使用 inotify 机制,回归为 polling 机制”
报错的原因是 inotify 跟踪的文件数量超出了系统设置的上限值,要是这个问题不经常出现可以使用临时解决方法,或者写入配置文件来永久解决. 临时解决方法: # 查看 inotify 的相关配置 $ ...
- Web安全测试学习笔记-DVWA-SQL注入-1
SQL注入的定义网上很多,作为一个初学者,我对SQL注入的理解是这样的:网站应用一般都有后台数据库(不论是关系型还是非关系型),用户在网站上的绝大部分操作,最终都会跟数据库交互(也就是执行一串SQL语 ...
- Web安全测试学习笔记-SQL注入-利用concat和updatexml函数
mysql数据库中有两个函数:concat和updatexml,在sql注入时经常组合使用,本文通过学习concat和updatexml函数的使用方法,结合实例来理解这种sql注入方式的原理. con ...