<1>函数知识归纳笔记
python金融科技爬虫 " />

Python是一个很强大的编程语言,其中最强大的特点之一就是函数。函数是可重用的代码块 ,用于执行特定的任务。函数可以减少代码的重复性,增加代码的可读性和可维护性。在金融科技爬虫开发中,函数也扮演了非常重要的角色。

一、函数的定义及参数传递

Python中的函数定义采用关键字“def”加上函数名,括号中可以传入参数(也可以为空),之后是函数的具体逻辑。在Python中,函数的返回值可以是任何数据类型。

下面是函数的定义格式:

```

def function_name(parameters):

/* 函数定义体 */

return (value)

```

其中,

- `def`:表示定义函数的关键字;

- `function_name`:表示自己定义的函数名;

- `parameters`:表示传入函数的参数;

- `return`:表示函数执行完毕后需要返回的值。

在定义函数时,可以传入参数。Python支持4种类型的函数参数传递:

- 位置参数

- 默认参数

- 变长参数

- 关键字(命名)参数

1.1 位置参数

位置参数是最普及的一种参数类型,就是根据参数的位置传递参数。例如下面这个函数:

```

def greet(name, message):

print(f"{name}, {message}")

greet("张三", "你好")

```

greet()函数中有两个参数:name和message,它们分别为“张三”和“你好”,且是按照位置来传递的。函数执行结果输出的是“张三, 你好”。

1.2 默认参数

如果不传递参数,位置参数无法使用,但是可以使用默认参数。默认参数允许在函数定义时赋一个默认值,此时在函数调用时,如果没有传递参数,则该参数默认为函数定义时的值。例如下面这个函数:

```

def greet(name, message="你好"):

print(f"{name}, {message}")

greet("张三")

```

greet()函数只传入了一个参数 “张三”,message参数使用了默认值“你好”。函数执行结果输出的是“张三, 你好”。

1.3 变长参数

如果希望传递任意数量的参数,那么可以使用变长参数。变长参数分为两种:元组参数和字典参数。

1.3.1 元组参数

元组参数使用*来表示,可以接收任意数量的位置参数,并将它们存储在一个元祖中。例如下面这个函数:

```

def get_number(*numbers):

print(numbers)

get_number(1,2,3,4)

```

get_number()函数参数前有一个*号,这个代表元组参数。函数传入4个位置参数,那么这4个参数就被封装在了一个元组中。函数执行结果输出的是“(1, 2, 3, 4)”。

1.3.2 字典参数

字典参数使用**来表示,可以接收任意数量的关键字参数,并将它们存储在一个字典中。例如下面这个函数:

```

def person(name, age, **others):

print("姓名:",name)

print("年龄:",age)

print("其他:",others)

person("张三", 18, 职业="程序员", 工作年限=3)

```

person()函数前两个参数为name和age,而允许传入任意数量的关键字参数,这些关键字参数会被存放在others字典中。函数执行结果输出的是:

```

姓名: 张三

年龄: 18

其他: {'职业': '程序员', '工作年限': 3}

```

1.4 关键字(命名)参数

关键字(命名)参数在函数参数传递时,参数的值需按照参数名传递。例如下面这个函数:

```

def person(name, age, **others):

print("姓名:",name)

print("年龄:",age)

print("其他:",others)

person(age=18, name="张三", 职业="程序员", 工作年限=3)

```

person()函数参数前没有*号,表示传入的是关键字参数。函数执行结果的输出与上面的结果相同。

二、函数作为对象使用

在Python中,函数是一等对象,也就是说函数可以像任何其他对象一样进行创建、传递、复制等操作。这使得函数可以作为另一个函数的参数使用,也可以作为另一个函数的返回值。

下面是一个简单的例子,其中函数“square()”返回一个数的平方,函数“cube()”返回一个数的立方。函数“generic_function()”可以通过传递参数和函数本身作为参数来执行各个函数。

```

def square(n):

return n ** 2

def cube(n):

return n ** 3

def generic_function(f, n):

return f(n)

print(generic_function(square, 2))

print(generic_function(cube, 2))

```

函数square()和cube()都接收一个参数n,并返回n的平方或立方。函数generic_function()接收两个参数。f是一个函数,n是一个数。它使用传递的参数调用函数f并返回结果。

函数调用语句“print(generic_function(square, 2))”会执行square(2),函数调用语句“print(generic_function(cube, 2))”会执行cube(2)。这样就可以复用generic_function()函数来执行不同的功能了。

三、高阶函数

高阶函数是指可以把函数作为参数传递的函数,也可以把函数作为返回值返回的函数。

在Python中,map、filter和reduce等内置函数就是高阶函数。

3.1 map函数

map()函数将一个函数应用到另一个可迭代对象的所有元素上,并返回一个新的可迭代对象。例如下面这个例子:

```

def double(n):

return n * 2

numbers = [1, 2, 3, 4, 5]

doubles = map(double, numbers)

print(list(doubles))

```

函数double()接收一个参数,并返回该参数的2倍。numbers是一个列表,包含了1至5的数字。doubles是一个Map对象,它应用double()函数到numbers列表的所有元素上并返回一个新的可迭代对象。

map对象不能直接打印成列表,需要使用list()函数将其转换为列表。上面的执行结果是“[2, 4, 6, 8, 10]”。

3.2 filter函数

filter()函数筛选可迭代对象中可以通过函数筛选的元素,并返回一个新的可迭代对象。例如下面这个例子:

```

def is_even(n):

return n % 2 == 0

numbers = [1, 2, 3, 4, 5]

even_numbers = filter(is_even, numbers)

print(list(even_numbers))

```

函数is_even()接收一个参数并返回True或False。numbers是一个列表,包含1至5的数字。even_numbers是一个Filter对象,用于筛选可通过is_even()函数的元素。

最后将Filter对象转换为列表,结果为“[2, 4]”。

3.3 reduce函数

作为Python的标准库的一部分,reduce()函数接收两个参数:由前两个值计算得到的结果和下一个值。它会循环遍历可迭代对象中的所有元素,最终返回一个单一的结果。

例如下面这个例子:

```

from functools import reduce

def addition(x, y):

return x + y

numbers = [1, 2, 3, 4, 5]

result = reduce(addition, numbers)

print(result)

```

reduce()函数使用addition()函数和列表numbers作为参数。addition()函数接收两个参数并返回它们的和,reduce()函数使用它将列表中的值相加。

函数输出结果是“15”。

四、闭包

闭包是指一个具有访问特定作用域内变量能力的内部函数,即可以访问其包含函数中生命的不属于全局命名空间的变量。函数可以返回另一个函数,这个函数就是闭包。闭包可以使用包含函数的作用域中的变量,即使在包含函数退出之后这些变量都还存在。

例如下面这个例子:

```

def add_number(n):

def adder(x):

return n + x

return adder

add_15 = add_number(15)

print(add_15(10))

```

在这个例子中,add_number()函数接收一个参数n。它定义了一个名为adder()的嵌套函数,adder()函数接收一个参数x,并将n与x相加。最后,add_number()函数返回adder()函数。

将add_number(15)返回的adder函数赋值给变量add_15。 调用变量add_15会调用adder函数。 最后结果是25,因为15 + 10 = 25。

这样,adder()函数就可以访问外部函数add_number()中的一个参数n,即使add_number()函数已经退出了。 这就是闭包的一个示例。

五、装饰器

装饰器在Python中是一种特殊类型的函数。它接受一个函数作为参数,并返回修改后的函数。装饰器的作用是在函数前后添加一些处理,并使代码更简洁。

下面是一个简单的装饰器示例:

```

def decorator_function(original_function):

def wrapper_function():

print(f"修改 {original_function.__name__} 的源代码")

original_function()

return wrapper_function

@decorator_function

def display():

print("我是 display 函数")

display()

```

在这个例子中,decorator_function()函数是一个装饰器和一个嵌套函数wrapper_function()。它接收一个函数作为参数,并返回这个函数的修改版本。

使用语法“@decorator_function”来调用装饰器。这表示display()函数将作为参数传递给装饰器函数。 装饰器函数中的wrapper_function()函数将在调用display()之前和之后执行。

这个装饰器示例用来在函数前后添加处理,输出的结果为:

```

修改 display 的源代码

我是 display 函数

```

六、总结

Python中的函数是重要的编程构建单元,能够减少繁琐的代码,提高代码可读性和可维护性。金融科技爬虫开发中,非常重要的技巧就是使用Python的函数编写高效的代码。

可以使用Python中的函数作为对象和高阶函数来实现更复杂的功能和算法。这些技术不仅使我们的代码更简洁和可维护,也更具扩展性和可重用性。

闭包和装饰器是Python中的两个强大的概念。使用它们可以方便地修改代码并在不破坏原有代码的情况下添加新的行为。

总之,掌握Python函数的使用技巧将对金融科技爬虫开发大有帮助。

壹涵网络我们是一家专注于网站建设、企业营销、网站关键词排名、AI内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。

我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!

点赞(88) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部