大家好,我是一名Python数据分析师,希望通过这篇文章分享我在转行过程中的一些经验和心得。以下是关于Python编程的学习系列之一:《15天学会Python编程》的第七篇。
如果不使用函数,代码会变得冗余、复杂,结构不够清晰,可读性和可扩展性都会下降。函数是带有名称的代码块,用于执行特定的任务。当你需要多次执行同一任务时,只需要调用函数即可,而不需要重复编写相同的代码。这样可以使程序的编写、阅读、测试和修复变得更加容易。
函数的定义格式如下:
python
def 函数名(参数):
pass
return 表达式
函数名可以由字母、数字和下划线组成。pass
表示什么都不做,return
后面可以返回任何表达式,如果没有返回值,默认返回 None
。
例如,下面是一个简单的函数,用于打印问候语:
```python def greet(): print('Hello!')
greet() ```
这段代码定义了一个名为 greet
的函数,它仅打印一条简单的问候语。调用该函数时,只需输入 greet()
即可。
函数参数可以增加函数的灵活性,使其能够处理不同的数据。函数参数分为形式参数(形参)和实际参数(实参)。形参是在定义函数时使用的参数,而实参是在调用函数时传递的参数。
根据传递方式的不同,实参可以分为值传递和引用传递。值传递是指传递不可变对象(如字符串、元组和数字),引用传递是指传递可变对象(如列表和字典)。
形参是在定义函数时指定的参数,用于接收实参传递的数据。实参是调用函数时传递的具体数据。
例如,可以修改 greet
函数,使其不仅打印问候语,还可以添加用户名:
```python def greet(username): print("Hello, " + username + "!")
greet('Jim') ```
执行该代码,结果为:
Hello, Jim!
这段代码展示了形参和实参的概念。在 greet('Jim')
中,实参 'Jim'
被传递给形参 username
。
Python 提供了几种传递实参的方式,包括必备参数、关键字参数、默认参数和可变参数。
必备参数需要按照正确的顺序传递,否则会导致错误。
```python def test(name, age): print("My name is " + name + ", I'm " + age + " years old today.")
test('Tom', '18') test('Jerry', '16') ```
执行结果:
My name is Tom, I'm 18 years old today.
My name is Jerry, I'm 16 years old today.
关键字参数允许你在调用函数时使用关键字和值来传递参数,从而不必考虑参数的顺序。
```python def test(name, age): print("My name is " + name + ", I'm " + age + " years old today.")
test(name='Tom', age='18') test(age='16', name='Jerry') ```
执行结果与必备参数相同。
默认参数可以在定义函数时指定默认值,从而在调用函数时可以省略某些参数。
```python def test(name, age='18'): print("My name is " + name + ", I'm " + age + " years old today.")
test(name='Tom') test(name='Jerry') ```
执行结果:
My name is Tom, I'm 18 years old today.
My name is Jerry, I'm 18 years old today.
可变参数允许传递任意数量的参数,通常使用 *args
和 **kwargs
。
```python def demo(*args): print('我喜欢的城市:') for city in args: print(city)
demo('深圳', '杭州', '上海') citylist = ['北京', '广州', '哈尔滨'] demo(*citylist)
def fun(name, age, **kwargs): print("name:", name, "age:", age, "other:", kwargs)
fun('Tom', 16, sex='male', job='teacher')
def fun1(**kwargs): print("name:age") for key, value in kwargs.items(): print(key, ":", value)
data = {'Tom': 23, 'Jin': 12} fun1(**data) ```
执行结果:
我喜欢的城市:
深圳
杭州
上海
我喜欢的城市:
北京
广州
哈尔滨
name: Tom age: 16 other: {'sex': 'male', 'job': 'teacher'}
name:age
Tom : 23
Jin : 12
hobby()
的函数编写一个名为 hobby()
的函数,它接受一个人的名字、年龄和性别,并返回一个描述该人的爱好的字典。使用组合参数的方式展示本章所学的传递参数的知识。
```python def hobby(name, age, gender, args, *kwargs): interests = { 'name': name, 'age': age, 'gender': gender, 'interests': list(args), 'extra_info': kwargs } return interests
result = hobby('Tom', 25, 'male', '阅读', '旅游', hobby='音乐', job='程序员') print(result) ```
python
for i in range(1, 10):
for j in range(1, 10):
if j > i:
break
print(f"{j}*{i}={i*j}", end="t")
print()
python
for i in range(31):
if i % 10 == 7 or i % 7 == 0:
continue
else:
result = f"{i}是偶数" if i % 2 == 0 else f"{i}是奇数"
print(result)
通过这些练习,你可以更好地掌握Python编程的基础知识和技巧。希望对你有所帮助!
如有更多问题,欢迎继续交流。