【从零学习python 】29. 「函数参数详解」——了解Python函数参数的不同用法

简介: 【从零学习python 】29. 「函数参数详解」——了解Python函数参数的不同用法

函数参数详解

一、缺省参数

调用函数时,缺省参数的值如果没有传入,则取默认值。

下例会打印默认的age,如果age没有被传入:

def printinfo(name, age=35):
   # 打印任何传入的字符串
   print("name: %s" % name)
   print("age %d" % age)
# 调用printinfo函数
printinfo(name="miki")  # 在函数执行过程中 age取默认值35
printinfo(age=9 ,name="miki")

以上实例输出结果:

name: miki
age: 35
name: miki
age: 9

总结:

在形参中默认有值的参数,称之为缺省参数

注意:带有默认值的参数一定要位于参数列表的最后面

def printinfo(name, age=35, sex):
     print name
    File "<stdin>", line 1
SyntaxError: non-default argument follows default argument

二、不定长参数

有时可能需要一个函数能处理比当初声明时更多的参数,这些参数叫做不定长参数,声明时不会命名。

基本语法如下:

def functionname([formal_args,] *args, **kwargs):
   """函数_文档字符串"""
   function_suite
   return [expression]

注意:

  • 加了星号(*)的变量args会存放所有未命名的变量参数,args为元组
  • 而加**的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典.
def test(a, b, *args, **kwargs):
      "函数在声明时,需要两个参数"
    print('a={},b={},args={},kwargs={}'.format(a,b,args,kwargs))
test(2, 3, '你好', 'hi', 'how do you do', name="zhangsan", age=18)
# a=2,b=3,args=('你好', 'hi', 'how do you do'),kwargs={'name': 'zhangsan', 'age': 18}
b = ('hi', '大家好', '今天天气真好')
d = {'name': "zhangsan", "age": 19}
# 注意,在传入参数时的星号问题。
test(10, 20, *b, **d) 
# a=10,b=20,args=('hi', '大家好', '今天天气真好'),kwargs={'name': 'zhangsan', 'age': 19}
# 如果在传值时,不使用星号,会把后面的参数当做 args
test(10,20,b,d)
# a=10,b=20,args=(('hi', '大家好', '今天天气真好'), {'name': 'zhangsan', 'age': 19}),kwargs={}

三、缺省参数在*args后面

def sum_nums_3(a, *args, b=22, c=33, **kwargs):
    print(a)
    print(b)
    print(c)
    print(args)
    print(kwargs)
sum_nums_3(100, 200, 300, 400, 500, 600, 700, b=1, c=2, mm=800, nn=900)

说明:

如果很多个值都是不定长参数,那么这种情况下,可以将缺省参数放到args的后面,但如果有**kwargs的话,kwargs必须是最后的

可变、不可变类型

总结

  • 所谓可变类型与不可变类型是指:数据能够直接进行修改,如果能直接修改那么就是可变,否则是不可变
  • 可变类型(修改数据,内存地址不会发生变化)有:列表、字典、集合
  • 不可变类型(修改数据,内存地址必定发生变化)有:数字、字符串、元组
相关文章
|
3天前
|
数据采集 SQL 关系型数据库
Python学习路线【对标大厂Python开发工程师的招聘要求,并推荐优质免费资源】打卡学习不迷茫
Python学习路线【对标大厂Python开发工程师的招聘要求,并推荐优质免费资源】打卡学习不迷茫
30 14
|
1天前
|
索引 Python
十分钟学习Python异常处理
在编程过程中,错误和异常是不可避免的。Python提供了强大的异常处理机制,帮助我们捕获和处理运行时错误,使程序更加健壮和可靠。本文将带你在十分钟内快速掌握Python的异常处理基础知识。
|
2天前
|
机器学习/深度学习 算法 数据挖掘
Python强化学习应用于数据分析决策策略:** - 强化学习让智能体通过环境互动学习决策。
【7月更文挑战第5天】**Python强化学习应用于数据分析决策策略:** - 强化学习让智能体通过环境互动学习决策。 - Python因丰富库(如TensorFlow, PyTorch, Keras, Pandas, NumPy)和生态而受青睐。 - 使用OpenAI Gym构建环境,如`gym.make(&#39;CartPole-v0&#39;)`。 - 选择模型,例如神经网络,定义策略如Q-Learning。 - 训练模型,调整智能体行为,如Q-Learning更新Q表。 - 最后评估模型性能,实现数据驱动决策。
11 3
|
2天前
|
Python
|
1天前
|
存储 人工智能 数据挖掘
十分钟学习Python基础知识
Python是一种高效、易学且功能强大的编程语言,广泛应用于数据分析、人工智能、Web开发等领域。如果你是编程新手,想要快速入门Python,那么这篇文章将是你的最佳选择。我将在十分钟内带你了解Python的基础知识。
|
2天前
|
Python
python解包字典到函数参数
【7月更文挑战第5天】
6 2
|
3天前
|
Python
Python 中 decimal 模块的用法教程
Python 中 decimal 模块的用法教程
5 0
|
4天前
|
Python
一分钟看懂Python中的 // 和 / 和 % 的用法区别
一分钟看懂Python中的 // 和 / 和 % 的用法区别