开发者学堂课程【Python入门 2020年版:函数的缺省函数】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/639/detail/10333
函数的缺省函数
默认参数的使用
参数在 python 中用法,种类很多。
如果不设置参数,就会有一个默认参数的使用
(1)例如:
def say_hello(name,age):
print("大家好,我是{(,我今年岁了".format(name,age))
say_hello( 'jack '
, 19)
运行结果:
大家好,我是jack,今年19岁了
一调用函数,就会被参数jack传递给name,将参数19传递给age
(2)def say_hello(name,age,city):
print("大家好﹐我是{},我今年岁了,我来自{}".format(name,age,city))
say_hello('jack ' , 19)
运行结果:报错
错误原因:
TypeError: say_hello() missing 1 required positional argument: 'city'
需要三个参数,但是只给了两个参数。
(3)end 缺省参数
有些函数的参数是,如果你传递了参数,就使用传递的参数,如果没有传递参数,就使用默认的值。
例:print(’hello world’)
Print(‘hi’)
运行结果:Hello world
Hi
打印完hello world 就自动换行了,不换行的做法
print
(’hello world’,end=’’)
Print(‘hi’)
运行结果:hello worldhi
Print
函数里end就是一个缺省参数
①print(’hello world’,end=’ ’)
Print(‘hi’)
运行结果:hello world hi
②print(’hello world’,)
Print(‘hi’)
运行结果:hello world
Hi
③print(’hello’,’你好’,sep=”___”)
Print(‘hi’)
运行结果:hello___你好
Hi
缺省参数就是提供的话就使用,不提供就是默认。定义缺省函数就是在函数声明后面直接给值,
def say_hello
(name,age,city=“襄阳”):#形参city设置了一个默认值
print("大家好﹐我是{},我今年岁了,我来自{}".format(name,age,city))
say_hello('jack ' , 19)
#如果没有传递参数,会使用默认值
运行结果:
大家好,我是jack,我今年19岁了,我来自襄阳 没有传递参数就直接写襄阳,
def say_hello
(name,age,city=“襄阳”):
print
("大家好﹐我是{},我今年岁了,我来自{}".format(name,age,city))
say_hello('jack ' , 19)
say_hello
(’tony’,20,’北京’)#如果传递参数,就使用传递的实参
运行结果:大家好,我是tony,我今年20岁了,我来自北京
def say_hello
(city=“襄阳”,name,age,):这种写法是错误的,缺省参数要放在后面,
def say_hello
(name,age,city=“襄阳”):
print
("大家好﹐我是{},我今年岁了,我来自{}".format(name,age,city))
say_hello
(name=’tony’,age=23,city=’北京’)
say_hello
(‘Jerry’,age=24,city=’南京’)#可以传递单个参数,也可以使用变量赋值的形式传递,单个的形参叫做位置参数,如果有位置参数和关键字参数,关键字参数一定要放在位置参数后面,’jerry‘是位置参数,age是关键字参数,位置参数要放在关键字参数的前面。
say_hello
(name=’herry,21 ,city=’成都’) 这种写法也是错误的
name 对应 name,位置参数要写在前面,写了name,就不能省略 age,顺序没有问题。
运行结果:
大家好,我是 henry,我今年21岁了,我来自成都
有的同学认为age是位置参数,另外两个是关键字参数,这种是错误的,因为age是位置参数,就必须放在最前面。
函数问题的解决
(1)def test( s):
print(s[2])
x = input
('请输入一个内容:')
test(x)
运行结果:
请输入一个内容:hello
1
请输入一个内容:good
O
请输入一个内容:m
就会报错
def test( s=10):
print()
用缺省值就可以,缺省值不能等于10,要等于‘10’,因为是将他当作字符串判断的。