python爬虫基础------函数

news2024/11/27 14:50:51

🎈🎈作者主页: 喔的嘛呀🎈🎈
🎈🎈所属专栏:python爬虫学习🎈🎈
✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 

 

小伙伴们大家好!今天我们来学习函数这个知识点。、

目录

一、定义函数

定义函数的语法

示例:定义一个简单的函数

默认参数

不定长参数

关键字参数

二、调用函数

调用函数的语法

示例:调用一个简单的函数

位置参数和关键字参数

不定长参数

调用带有默认参数的函数

保存函数返回值

三、函数参数

1. 位置参数

2. 默认参数

3. 可变参数

4. 关键字参数

四、函数返回值

返回单个值

返回多个值

没有返回值

返回值的作用

五、局部变量

定义局部变量

局部变量的作用域

六、全局变量

定义全局变量

修改全局变量

注意事项

使用 globals() 函数获取全局变量

七、函数注意事项

1. 变量作用域

2. 默认参数的可变对象

3. 函数注释

4. 函数命名

5. 函数调用


一、定义函数

当你想要重复执行一些代码,或者想要将一段代码组织成一个可重用的模块时,就可以使用函数。Python 中使用 def 关键字来定义函数。下面是关于定义函数的详细内容:

定义函数的语法

def function_name(parameters):
    """函数文档字符串"""
    # 函数体,即具体实现功能的代码块
    return expression  # 可选,返回值

  • def 关键字用于定义函数,后面跟着函数名。
  • 函数名应该能描述函数的功能,通常使用小写字母和下划线。
  • 参数列表可以为空,或者包含一或多个参数,多个参数之间用逗号分隔。
  • 函数体是函数的实际实现,其中的代码块会在函数被调用时执行。
  • 文档字符串(docstring)用于描述函数的作用和用法,建议使用三重引号包裹起来,方便查看函数文档。

示例:定义一个简单的函数

下面是一个简单的函数,接受一个参数并返回该参数的平方值:

def square(x):
    """计算输入值的平方"""
    return x * x

# 调用函数
result = square(5)
print(result)  # 输出:25

默认参数

可以为函数参数指定默认值,当调用函数时没有传递该参数时,使用默认值。

def greet(name='World'):
    """打印问候语"""
    print(f"Hello, {name}!")

greet()  # 输出:Hello, World!
greet('Alice')  # 输出:Hello, Alice!

不定长参数

使用 *args 来处理不定长参数,可以接受任意数量的参数,并将它们作为一个元组传递给函数。

def add(*args):
    """计算所有参数的和"""
    total = 0
    for num in args:
        total += num
    return total

result = add(1, 2, 3, 4, 5)
print(result)  # 输出:15

关键字参数

使用 **kwargs 来处理关键字参数,可以接受任意数量的关键字参数,并将它们作为一个字典传递给函数。

def info(**kwargs):
    """打印关键字参数"""
    for key, value in kwargs.items():
        print(f"{key}: {value}")

info(name='Alice', age=30)
# 输出:
# name: Alice
# age: 30

以上就是关于定义函数的基本知识,希望这些内容能够帮助你更好地理解函数的概念和用法!

二、调用函数

调用函数是指使用函数名和括号来执行函数体内的代码。在 Python 中,函数调用非常简单,只需要使用函数名和括号即可。下面是关于调用函数的详细内容:

调用函数的语法

function_name(arguments)

  • function_name 是函数的名称。
  • arguments 是传递给函数的参数,可以是零个或多个参数,多个参数之间用逗号分隔。

示例:调用一个简单的函数

假设我们已经定义了一个函数 square,用于计算一个数的平方。现在我们将调用这个函数:

def square(x):
    """计算输入值的平方"""
    return x * x

# 调用函数
result = square(5)
print(result)  # 输出:25

位置参数和关键字参数

在调用函数时,可以按照参数的位置传递参数,也可以使用关键字参数指定参数的值。

def greet(name, message):
    """打印问候语"""
    print(f"Hello, {name}! {message}")

# 位置参数调用
greet('Alice', 'Welcome to our party!')

# 关键字参数调用
greet(message='Welcome to our party!', name='Alice')

不定长参数

可以使用 *args**kwargs 处理不定长参数,在函数调用时可以传递任意数量的参数。

def add(*args):
    """计算所有参数的和"""
    total = 0
    for num in args:
        total += num
    return total

result = add(1, 2, 3, 4, 5)
print(result)  # 输出:15

def info(**kwargs):
    """打印关键字参数"""
    for key, value in kwargs.items():
        print(f"{key}: {value}")

info(name='Alice', age=30)
# 输出:
# name: Alice
# age: 30

调用带有默认参数的函数

如果函数有默认参数,可以选择传递或不传递这些参数。

def greet(name='World'):
    """打印问候语"""
    print(f"Hello, {name}!")

greet()  # 输出:Hello, World!
greet('Alice')  # 输出:Hello, Alice!

保存函数返回值

函数执行后会返回一个值,可以将这个值保存在变量中以备后续使用。

def add(a, b):
    """计算两个数的和"""
    return a + b

result = add(3, 5)
print(result)  # 输出:8

以上就是关于调用函数的详细内容,希望这些内容能够帮助你更好地理解函数的调用方式!

三、函数参数

在 Python 中,函数参数可以分为四种类型:位置参数、默认参数、可变参数和关键字参数。下面详细介绍这四种类型的函数参数,并提供相应的代码示例:

1. 位置参数

位置参数是指根据参数的位置来传递值的参数。在函数定义时,参数的顺序和数量必须与调用时传递的参数一致。

def greet(name, message):
    """打印问候语"""
    print(f"Hello, {name}! {message}")

# 调用函数时按照位置传递参数
greet('Alice', 'Welcome to our party!')

2. 默认参数

默认参数是在函数定义时为参数指定默认值,如果调用函数时没有提供该参数的值,则使用默认值。

def greet(name='World', message='Welcome'):
    """打印问候语"""
    print(f"Hello, {name}! {message}")

# 调用函数时可以不传递参数,使用默认值
greet()
greet('Alice')

3. 可变参数

可变参数允许传递任意数量的参数,这些参数会被封装成一个元组(*args)传递给函数。

def add(*args):
    """计算所有参数的和"""
    total = 0
    for num in args:
        total += num
    return total

# 可以传递任意数量的参数
result = add(1, 2, 3, 4, 5)
print(result)  # 输出:15

4. 关键字参数

关键字参数允许传递任意数量的参数,这些参数会被封装成一个字典(**kwargs)传递给函数。

def info(**kwargs):
    """打印关键字参数"""
    for key, value in kwargs.items():
        print(f"{key}: {value}")

# 可以传递任意数量的关键字参数
info(name='Alice', age=30)

这些是 Python 中常用的函数参数类型,结合使用这些参数类型可以灵活地定义函数,适应不同的需求。希望这些内容能帮助你更好地理解 Python 函数参数!

四、函数返回值

函数的返回值是指在函数执行完成后,将结果返回给调用者的值。在 Python 中,使用 return 关键字来返回值。函数可以返回任意类型的值,包括数字、字符串、列表、字典等。下面是关于函数返回值的详细内容:

返回单个值

使用 return 关键字可以返回单个值,函数执行到 return 语句时会结束并返回该值。

def add(a, b):
    """计算两个数的和"""
    return a + b

result = add(3, 5)
print(result)  # 输出:8

返回多个值

Python 中的函数可以返回多个值,这些值会被封装成一个元组。

def add_and_subtract(a, b):
    """计算两个数的和与差"""
    return a + b, a - b

result = add_and_subtract(5, 3)
print(result)  # 输出:(8, 2)

# 可以使用多个变量接收返回值
sum_result, diff_result = add_and_subtract(5, 3)
print(sum_result)  # 输出:8
print(diff_result)  # 输出:2

没有返回值

如果函数没有使用 return 语句返回值,默认返回 None

def greet(name):
    """打印问候语"""
    print(f"Hello, {name}!")

result = greet('Alice')
print(result)  # 输出:None

返回值的作用

返回值可以让函数的结果被外部代码使用,可以用于传递计算结果、状态信息等。在函数中使用 return 可以提高代码的灵活性和可读性。

def is_even(num):
    """判断一个数是否为偶数"""
    if num % 2 == 0:
        return True
    else:
        return False

if is_even(5):
    print("5是偶数")
else:
    print("5是奇数")

以上就是关于函数返回值的详细内容,希望这些内容能够帮助你更好地理解函数的返回值!

五、局部变量

在 Python 中,局部变量是在函数内部定义的变量,其作用范围仅限于该函数内部,无法在函数外部访问。以下是关于局部变量的详细内容,包含了局部变量的定义、作用域和使用方法:

定义局部变量

局部变量是在函数内部使用 = 运算符进行赋值定义的变量。

def my_func():
    # 定义局部变量
    my_var = 10
    print(my_var)

my_func()
# 在函数外部访问局部变量会导致错误
# print(my_var)  # 这里会报错:NameError: name 'my_var' is not defined

局部变量的作用域

局部变量的作用范围仅限于函数内部,在函数外部无法访问。

def my_func():
    # 定义局部变量
    my_var = 10
    print(my_var)

my_func()
# 在函数外部访问局部变量会导致错误
# print(my_var)  # 这里会报错:NameError: name 'my_var' is not defined

六、全局变量

在 Python 中,全局变量是在函数外部定义的变量,可以在整个程序中被访问和修改。以下是关于全局变量的详细内容,包含了全局变量的定义、作用域和使用方法:

定义全局变量

全局变量是在函数外部使用 = 运算符进行赋值定义的变量。

global_var = 10  # 定义全局变量

def my_func():
    print(global_var)  # 在函数内部访问全局变量

my_func()
print(global_var)  # 在函数外部访问全局变量

修改全局变量

在函数内部可以使用 global 关键字来修改全局变量的值。

global_var = 10  # 定义全局变量

def my_func():
    global global_var
    global_var = 20  # 修改全局变量的值
    print(global_var)

my_func()
print(global_var)  # 全局变量的值被修改为 20

注意事项

  • 在函数内部可以访问全局变量,但是不能修改全局变量的值,除非使用 global 关键字。
  • 局部变量和全局变量可以同名,但是函数内部的局部变量会覆盖同名的全局变量。
global_var = 10  # 全局变量

def my_func():
    # 使用同名的局部变量覆盖全局变量
    global_var = 20
    print("Inside function:", global_var)

my_func()
print("Outside function:", global_var)  # 全局变量值未被修改

使用 globals() 函数获取全局变量

可以使用 globals() 函数获取所有全局变量的字典。

global_var = 10  # 定义全局变量

def my_func():
    global_var = 20  # 在函数内部定义同名局部变量
    print("Inside function:", globals()['global_var'])

my_func()
print("Outside function:", globals()['global_var'])

以上就是关于全局变量的详细内容,希望对你理解全局变量有所帮助!

七、函数注意事项

在使用 Python 函数时,有一些注意事项需要特别注意,以避免出现错误或不必要的问题。以下是一些常见的注意事项:

1. 变量作用域

  • 函数内部可以访问全局变量,但如果在函数内部尝试修改全局变量的值,Python 会将其视为创建一个新的局部变量,除非使用 global 关键字声明要修改的是全局变量。
global_var = 10  # 全局变量

def my_func():
    global global_var
    global_var = 20  # 修改全局变量的值
    print("Inside function:", global_var)

my_func()
print("Outside function:", global_var)  # 全局变量的值被修改为 20

2. 默认参数的可变对象

  • 在函数定义中,将可变对象(如列表或字典)作为默认参数时,要注意默认参数在函数定义时被创建,并且该对象将在后续调用中共享。
def append_to_list(value, my_list=[]):
    my_list.append(value)
    return my_list

print(append_to_list(1))  # 输出:[1]
print(append_to_list(2))  # 输出:[1, 2]
print(append_to_list(3))  # 输出:[1, 2, 3]

在上面的示例中,由于默认参数 my_list 是可变对象(列表),它在函数定义时被创建,并且每次调用函数时都会使用同一个列表对象。这可能会导致意外的行为,因此应该避免使用可变对象作为默认参数。

3. 函数注释

  • 可以使用函数注释来描述函数的参数和返回值,提高代码的可读性和可维护性。
def add(a: int, b: int) -> int:
    """返回两个整数的和"""
    return a + b

4. 函数命名

  • 函数命名应具有描述性,能够清晰地表达函数的功能,避免使用过于简单或容易混淆的名称。
# 不好的命名方式
def func(a, b):
    pass

# 好的命名方式
def calculate_sum(num1, num2):
    pass

5. 函数调用

  • 在调用函数时,应确保传递正确数量和类型的参数,以避免出现错误。
def greet(name):
    print(f"Hello, {name}!")

# 传递正确数量的参数
greet('Alice')

# 传递错误数量的参数将导致 TypeError
# greet('Alice', 'Bob')

通过遵守这些注意事项,可以编写出更加健壮和可维护的 Python 函数。

好了今天的python函数学习就到这里了,拜拜喽!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1556682.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

打工人神器! Raccoon 代码小浣熊

继这三个之后,今天又来了一个 [ Raccoon代码小浣熊 ] 核心精要与产品特点 全面支持多种编程语言和IDE:「代码小浣熊」支持超过90种主流编程语言,包括但不限于Python、Java、JavaScript、C、Go和SQL等。同时,它集成了市面上主流的…

电脑换屏总结——关于我把电脑砸了这件事!

大家好,我是工程师看海,很高兴和各位一起分享我的原创文章,喜欢和支持我的工程师,一定记得给我点赞、收藏、分享哟。 加微信[chunhou0820]与作者进群沟通交流。 【淘宝】https://m.tb.cn/h.5PAjLi7?tkvmMLW43KO7q CZ3457 「运放秘…

【ENSP】交换机和交换机之间实现静态路由

1.概念 三层交换机只能在Vlanif逻辑口配置iP地址 2.实现方法 交换机允许对应vlan通行,配置vlanif的ip地址,做静态路由 3.静态路由配置方法 ip route-static 目的网段 子网掩码 下一跳设备 LSW1三层交换机配置 u t m sys vlan batch 10 20 …

一文彻底搞懂并发容器

文章目录 1. 什么是并发容器2. 并发容器的分类 1. 什么是并发容器 并发容器是一种用于多线程环境的数据结构,它们能够有效地处理并发访问和修改的问题。在多线程应用程序中,多个线程可能会同时访问和修改共享的数据结构,这可能会导致数据不一…

npm卸载不掉的解决方案

不管怎么重装重启都报错 真服了,npm卸载不掉绝对是有缓存存在,用where npm查到d盘 实际上根本不在这个地方,这个是我安装的6.14.12版本的npm的地方,我说我怎么怎么重装怎么导包都不行呢,偷偷隐藏在这个目录里面&#…

vue3路由代码示例

路由简单分三步吧 第一定义路由&#xff1a; 包括访问地址&#xff0c;对应组件 第二使用&#xff1a;在index.html中使用它 下面是代码示例&#xff1a; components/Person.vue <template><router-link to"/test/hello">跳转</router-link>&…

简易TCP服务器通信、IO多路复用(select、poll、epoll)以及reactor模式。

网络编程学习 简单TCP服务器通信TCP三次握手和四次挥手三次握手&#xff08;如下图&#xff09;常见问题&#xff1f; 四次挥手 client和server通信写法server端client端 通信双方建立连接到断开连接的状态转换怎么应对多用户连接&#xff1f;缺点 IO多路复用select优缺点 poll…

Linux---命令行参数

一、命令行参数 在介绍命令行参数前&#xff0c;我想问大家一个问题&#xff0c;在以前写C/C时&#xff0c;main 函数可不可以带参数&#xff1f; 答案是可以带的&#xff0c;int main(int argc, char* argv[]){}&#xff0c;但平时写代码时也证明了&#xff0c;main 函数的参…

Gradle连接超时问题connect time out

出现这样的问题不要慌张&#xff0c;可能是你配置gradle的问题一步一步来解决就完事了 1. 出现这样的问题首先我们先检查配置 首先我们先看到的标出来的地址可以看到&#xff0c;我们需要下载的是这个链接里面的压缩包数据&#xff0c;查看版本以及这个链接是不是错误的 2. 第…

[OpenCV学习笔记]Qt+OpenCV实现图像灰度反转、对数变换和伽马变换

目录 1、介绍1.1 灰度反转1.2 图像对数变换1.3 图像伽马变换 2、效果图3、代码实现4、源码展示 1、介绍 1.1 灰度反转 灰度反转是一种线性变换&#xff0c;是将某个范围的灰度值映射到另一个范围内&#xff0c;一般是通过灰度的对调&#xff0c;突出想要查看的灰度区间。 S …

大创项目推荐 深度学习 opencv python 实现中国交通标志识别_1

文章目录 0 前言1 yolov5实现中国交通标志检测2.算法原理2.1 算法简介2.2网络架构2.3 关键代码 3 数据集处理3.1 VOC格式介绍3.2 将中国交通标志检测数据集CCTSDB数据转换成VOC数据格式3.3 手动标注数据集 4 模型训练5 实现效果5.1 视频效果 6 最后 0 前言 &#x1f525; 优质…

Windows下载使用nc(netcat)命令

‘nc’ 不是内部或外部命令&#xff0c;也不是可运行的程序&#xff1f; 点击链接地址&#xff0c;下载压缩包。 完成后解压 使用方式&#xff08;三种&#xff09;&#xff1a; 1、直接双击exe使用 2、把这个exe放到cmd启动的默认路径下 放到默认路径下&#xff0c;使用nc&a…

【Deep Learning 11】Graph Neural Network

&#x1f31e;欢迎来到图神经网络的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f4c6;首发时间&#xff1a;&#x1f339;2024年3月20日…

openLooKeng开发环境搭建

文章目录 搭建OpenLooKeng开发环境要求 以下是搭建OpenLooKeng开发环境的基本步骤&#xff1a;1、从OpenLooKeng的GitHub仓库克隆代码&#xff1a;2、 构建OpenLooKeng生成IntelliJ IDEA项目文件 airbase构建项目过程中出现的问题checkstyle错误版本冲突问题hetu-heuristic-ind…

辽宁政府采购网怎么入驻?

辽宁政府采购网的入驻流程包括以下几个主要步骤&#xff1a; 注册账号&#xff1a;在辽宁政府采购网上商城注册账号。CA证书领取&#xff1a;注册成功后&#xff0c;需要领取CA证书以登录网上商城。搭建自营商城&#xff1a;因为后期需要和辽宁政府采购网上商城进行入驻&#…

执行 kubeadm join 报错ERROR FileAvailable--etc-kubernetes-kubelet.conf

执行 kubeadm join 报错ERROR FileAvailable–etc-kubernetes-kubelet.conf [rootk8snode2 ~]# kubeadm join apiserver.demo:6443 --token c4nezq.ecv2kg9ok6gsresw --discovery-token-ca-cert-hash sha256:be1a55bea6b5bb5c8810434d3905a9cd0bbc33181862f7ad601346e1ab0…

.NET CORE 分布式事务(二) DTM实现TCC

目录 引言&#xff1a; 1. TCC事务模式 2. TCC组成 3. TCC执行流程 3.1 TCC正常执行流程 3.2 TCC失败回滚 4. Confirm/Cancel操作异常 5. TCC 设计原则 5.1 TCC如何做到更好的一致性 5.2 为什么只适合短事务 6. 嵌套的TCC 7. .NET CORE结合DTM实现TCC分布式事务 …

wireshark创建显示过滤器实验简述

伯克利包过滤是一种在计算机网络中进行数据包过滤的技术&#xff0c;通过在内核中插入过滤器程序来实现对网络流量的控制和分析。 在数据包细节面板中创建显示过滤器&#xff0c;显示过滤器可以在wireshark捕获数据之后使用。 实验拓扑图&#xff1a; 实验基础配置&#xff1…

计算机专业在找工作时的注意事项

目录 说在前面关于我一些忠告关于简历关于银行写在最后 说在前面 满满的求生欲。我不是什么大佬&#xff0c;更没有能力教大家什么。只是看到有不少学弟学妹&#xff0c;还在为找一份工作焦头烂额&#xff0c;却没有努力的方向。所以这里斗胆给计算机相关专业的学弟学妹们的一…

【动手学深度学习-pytorch】 9.4 双向循环神经网络

在序列学习中&#xff0c;我们以往假设的目标是&#xff1a; 在给定观测的情况下 &#xff08;例如&#xff0c;在时间序列的上下文中或在语言模型的上下文中&#xff09;&#xff0c; 对下一个输出进行建模。 虽然这是一个典型情景&#xff0c;但不是唯一的。 还可能发生什么其…