Python基础第九节—函数中

本文介绍了Python中函数的不定长参数,包括不定长位置参数和关键字参数,以及函数的返回值、参数解包、文档字符串、作用域和命名空间。通过示例讲解了如何定义和使用这些特性,并给出了一个判断闰年的函数作业。
摘要由CSDN通过智能技术生成

一、不定长参数

不定⻓参数也叫可变参数。⽤于不确定调⽤的时候会传递多少个参数(不传参也可以)的场景。此时,可⽤包裹(packing)位置参数,或者包裹关键字参数,来进⾏参数传递,会显得⾮常⽅便。

1、不定长位置参数

  • 定义函数时,可以在形参前面加一个*,这样这个形参可以获取到所有的实参,它会将所有的实参保存到一个元组中
  • 带*号的形参只能有一个,可以和其他参数配合使用
  • *形参只能接受位置参数,不能接受关键字参数
def user_info(*args):
 print(args)
user_info('TOM')  输出:('TOM',)
user_info('TOM', 18)	输出:('TOM', 18)

2、不定长关键字参数

  • **形参可以接收其他的关键字参数,它会将这些参数统一保存到字典当中。字典的key就是参数的名字,字典的value就是参数的值
  • **形参只有一个,并且必须写在所有参数的后面
  • ⽆论是包裹位置传递还是包裹关键字传递,都是⼀个组包的过程。
def user_info(**kwargs):
 print(kwargs)
user_info(name='TOM', age=18, id=110)
输出: {'name': 'TOM', 'age': 18, 'id': 110}

二、函数的返回值

  • 返回值就是函数执行以后返回的结果
  • 通过return来指定函数的返回值
  • return后面可以跟任意对象,返回值甚至可以是一个函数
  • 使用return后将不执行return后面的参数
def return_num():
    pass
def return_num2():
    return 12
print(return_num())		输出:None
print(return_num2())	输出:12

三、参数的解包

  • 传递实参时,也可以在序列类型的参数前添加星号,这样它会自动的将序列中元素依次作为参数传递
  • 要求序列中的元素的个数必须和形参的个数一致

元组的拆包

def return_num():
	return 100, 200
num1, num2 = return_num()
print(num1)  输出:100
print(num2)  输出; 200

四、文档字符串

  • help()是Python中内置函数,通过help()函数可以查询Python中函数的用法
  • 在定义函数时,可以在函数内部编写文档字符串,文档字符串就是对函数的说明

在这里插入图片描述
自定义文档字符串,在创建一个函数后,在函数内部,用双引号,可以自动创建文档字符串。

def test(name,age,sex):
    '''
    :param name: 
    :param age: 
    :param sex: 
    :return: 
    '''
    pass

五、函数的作用域

作用域指的是变量生效的区域,在Python中一共有两种作用域

全局作用域

  • 全局作用域在程序执行时创建,在程序执行结束时销毁
  • 所有函数以外的区域都是全局作用域
  • 在全局作用域中定义的变量,都是全局变量,全局变量可以在程序的任意位置进行访问

函数作用域

  • 函数作用域在函数调用时创建,在调用结束时销毁
  • 函数每调用一次就会产生一个新的函数作用域
  • 在函数作用域中定义的变量,都是局部变量,它只能在函数内部被访问
num = 1
def test():
    num = 10  #对全局变量num重新赋值
    print(num)		输出:10
test()
print(num)  输出:1	 函数内部的赋值对函数外没有影响

六、命名空间

  • 命名空间实际上就是一个字典,是一个专门用来存储变量的字典
  • locals()用来获取当前作用域的命名空间
  • 如果在全局作用域中调用locals()则获取全局命名空间,如果在函数作用域中调用locals()则获取函数命名空间
  • 返回值是一个字典
num = 1
def test():
    num = 10
    print(num)
test()
print(num,locals())

七、作业

用函数实现一个判断用户输入的年份是否是闰年的程序
1.能被400整除的年份
2.能被4整除,但是不能被100整除的年份
以上2种方法满足一种即为闰年

a = int(input('请输入一个年份'))
def year():
    if a//4 == 0 and a//100 != 0:
        print('你输入的年份是闰年')
    elif a%400 == 0:
        print('你输入的年份是闰年')
    else:
        print('你输入的年份不是闰年')
year()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值