🚀【Python】一文向您详细介绍 *(星号)和 **(双星号)
下滑即可查看博客内容
🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇
🎓 博主简介:985高校的普通本硕,曾有幸发表过人工智能领域的 中科院顶刊一作论文,熟练掌握PyTorch框架。
🔧 技术专长: 在CV、NLP及多模态等领域有丰富的项目实战经验。已累计提供近千次定制化产品服务,助力用户少走弯路、提高效率,近一年好评率100% 。
📝 博客风采: 积极分享关于深度学习、PyTorch、Python相关的实用内容。已发表原创文章600余篇,代码分享次数逾十万次。
💡 服务项目:包括但不限于科研辅导、知识付费咨询以及为用户需求提供定制化解决方案。
🌵文章目录🌵
- 📘 一、引言
- 🧠 二、理解单星号 *
- 示例:解包操作
- 示例:作为参数前缀
- 🧩 三、探索双星号 **
- 示例:作为参数前缀
- 💻 四、结合使用 * 和 **
- 示例:组合使用
- 📚 五、实际应用案例
- 示例:HTML 段落生成器
- 🤔 六、进阶技巧
- 示例:类属性限制
- 🌟 七、总结与展望
下滑即可查看博客内容
📘 一、引言
在 Python 编程中,星号 *
和双星号 **
是两个非常强大的特性,它们能够帮助我们处理函数调用时的可变参数列表,以及在字典和列表等数据结构中的解包操作。本文将从浅显易懂的角度出发,通过具体的代码示例,逐步揭示这两个符号的奥秘。
🧠 二、理解单星号 *
单星号 *
在 Python 中有两种主要用途:作为参数前缀表示接收位置参数的元组,以及在表达式中表示解包操作。
示例:解包操作
numbers = [1, 2, 3]
print(*numbers) # 输出: 1 2 3
示例:作为参数前缀
def print_args(*args):
for arg in args:
print(arg)
print_args(1, 'hello', 3.14) # 输出: 1 hello 3.14
🧩 三、探索双星号 **
双星号 **
同样有两种用途:作为参数前缀表示接收关键字参数的字典,以及在表达式中表示字典的解包操作。
示例:作为参数前缀
def greet_user(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
greet_user(name='Alice', age=25)
# 输出:
# name: Alice
# age: 25
💻 四、结合使用 * 和 **
在某些情况下,你可能需要同时使用 *
和 **
来传递参数给函数。
示例:组合使用
def combine_data(*args, **kwargs):
print("Args:", args)
print("Kwargs:", kwargs)
data = [1, 2, 3]
info = {'name': 'Alice', 'age': 25}
combine_data(*data, **info)
# 输出:
# Args: (1, 2, 3)
# Kwargs: {'name': 'Alice', 'age': 25}
📚 五、实际应用案例
让我们通过一个实际的例子来加深理解:编写一个函数,该函数接受任意数量的位置参数和关键字参数,并根据这些参数生成一个简单的 HTML 段落。
示例:HTML 段落生成器
def generate_html_paragraph(*args, **kwargs):
content = " ".join(str(arg) for arg in args)
attributes = " ".join(f'{k}="{v}"' for k, v in kwargs.items())
return f'<p {attributes}>{content}</p>'
print(generate_html_paragraph('Hello World!', style='bold', class_='highlight'))
# 输出: <p style="bold" class="highlight">Hello World!</p>
🤔 六、进阶技巧
除了基本用法之外,*
和 **
还可以用于一些高级编程技巧,比如在类定义中限制属性的访问,或者动态地创建类实例。
示例:类属性限制
class Person:
def __init__(self, *args, **kwargs):
self.__dict__.update(kwargs)
person = Person(name='Bob', age=30)
print(person.name) # 输出: Bob
🌟 七、总结与展望
通过这篇文章,我们不仅深入了解了 *
和 **
的基本用法,还探索了它们在实际编程中的多种应用场景。掌握这些技巧不仅能让你的代码更加灵活高效,还能帮助你在面对复杂问题时找到更优雅的解决方案。未来,随着 Python 语言的不断发展和完善,我们期待看到更多创新的应用方式出现。