Python从入门到网络爬虫(函数详解)

前言

函数是变成语言中最常见的语法,函数的本质就是功能的封装。使用函数可以大大提高编程效率与程序的可读性。函数是能够实现特定功能的计算机代码而已,他是一种特定的代码组结构。

函数的作用

  • 1.提升代码的重复利用率,避免重复开发相同代码
  • 2.提高程序开发效率
  • 3.便于程序维护

1. 函数的定义

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
  • 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

基本

def 函数名称( ):

        # 函数体

带有参数

def 函数名称(参数[,参数2,参数3]):

        # 代码块

带有返回值

def 函数名称():

        # 代码块

        return values

def funName(args):print(args)return args

函数名的命名规则:和变量基本一样

  • 1.推荐使用英文或者拼音,禁止使用中文
  • 2.可以使用数字,但是不能用数字开头
  • 3.不可以使用特殊字符,除了_
  • 4.函数名严格区分大小写
  • 5.函数名必须要有意义。
  • 6.不能和系统已经存在的保留关键字冲突!
  • 7.禁止使用和系统提供函数相同的函数名

2. 函数的调用

注意函数定义之后不会自动执行,必须在调用函数后函数才会执行,并且函数必须定义在前,只有前边定义了函数后面才能调用

# 函数定义
def funName(args):print(args)return args
# 函数调用:注意函数必须定义在前,只有前边定义了函数后面才能调用
funName("xujingliang")

3. 函数参数

3.1 必备参数

必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。

def getAll(a,b,c,d):return a+b+c+d
print(getAll(1,2,3,4))
 3.2 关键字参数

关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

def getUserInfo(name,age):print(name,age)
getUserInfo("xujingliang",20)
getUserInfo(age=20,name="sunyanan")
3.3 默认参数

调用函数时,默认参数的值如果没有传入,则被认为是默认值。下例会打印默认的age,如果age没有被传入: 

def getPassword(username,password="12345"):print(username,password)
getPassword("xujingliang")
getPassword("sunyanan","54321")
 3.4 不定长参数

不定长参数:你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。基本语法如下:

def printUsers(user,*users):print(user)print(users)
printUsers("xujingliang")
printUsers("xujingliang","xunyanan","wuyou","wutong")def getAllSum(arg,*args):res = argif len(args)>0:for i in args:res += ireturn res
print("return语句返回结果",getAllSum(10,20,30,40))

4. 匿名函数

使用 lambda 来创建匿名函数。

  • python 使用 lambda 来创建匿名函数。
  • 所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。
  • lambda 只是一个表达式,函数体比 def 简单很多。
  • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
  • lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
  • 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

语法: lambda [arg1 [,arg2,.....argn]]:expression

userinfo = lambda username,password:print(username+":"+password)
userinfo("xujingliang","123456789")

5. return语句

return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。之前的例子都没有示范如何返回数值,下例便告诉你怎么做:

def getResult(arg,*args):res = argif len(args)>0:for i in args:res += ireturn res
print("return语句返回结果",getResult(10,20,30,40))

上述代码示例中,计算所有传入参数的值,并返回所有值的总和结果。 

6. 变量作用域

 一个程序的所有的变量并不是在哪个位置都可以访问的。访问权限决定于这个变量是在哪里赋值的。变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称。两种最基本的变量作用域如下:

  • 全局变量
  • 局部变量

定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。如下实例:

total = 10
def getSum(a,b):total = a+bprint("这里的total为局部变量",total)return total
getSum(10,10)
print("这里的total为全局变量与函数内的total互不影响",total)

可以通过global关键字来在函数内部创建全局变量

def createGlobalVar(globalArgs):global globalArgglobalArg = globalArgscreateGlobalVar(200)
print(globalArg)

如果全局变量和局部变量重名,可以使用全局函数globals()在函数内部访问重名的全局变量 

def accessGlobalVar():total = 10086print(total)print(globals()['total'])
accessGlobalVar()

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

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

相关文章

js——json对象相互转化——js基础积累

js——json对象相互转化——js基础积累 需求场景解决步骤1:定义一个变量接收此字段,方便处理解决步骤2: { 外面的双引号要去掉解决步骤3:使用正则去除参数中的\\解决步骤4:如果此参数必须以{开头,以}结尾解…

一文快速了解超声功率放大器基础知识

超声功率放大器是一种电子设备,用于放大超声信号的能量。它在多个领域中发挥重要作用,包括医疗、工业、科学研究等。超声功率放大器通过将输入信号的能量放大到所需的级别,以便更好地驱动其他设备或实现特定的应用。下面就给大家介绍一下超声…

C++ 多态向上转型详解

文章目录 1 . 前言2 . 多态3 . 向上转型4 . 总结 【极客技术传送门】 : https://blog.csdn.net/Engineer_LU/article/details/135149485 1 . 前言 此篇博文详解C的多态向上转型平台 : Qt 2 . 多态 【Q】什么是多态? 【A】解释如下 : 通俗来说,就是多种形态,具体…

2024,这将是量子计算的真正挑战

2023年,一项项量子计算纪录被打破。 谷歌量子AI团队证明了将多个量子比特分组合成为一个逻辑量子比特的纠错方法可以提供更低的容错率。以往的纠错研究随着比特数的增加,错误率会提高,都是“越纠越错”,而这次谷歌首次实现了“越纠…

【springboot+mybatis实现CURD模版项目-Jesus】

springbootmybatis实现CURD模版项目-Jesus STEP 1 项目创建 1.1 新建Spring Initializr项目   1.2 选择需要的依赖 springboot有2.7.2直接选272STEP 2 配置更改 2.1更改maven配置   2.2 检查项目配置jdk、sdk、jre版本一致   2.3 检查pom文件,Maven-Reload pr…

grep笔记240103

常用选项:: -i:忽略大小写进行匹配。 -v:反向匹配,只打印不匹配的行。 -n:显示匹配行的行号。 -r:递归查找子目录中的文件。 -l:只打印匹配的文件名。 -c:只打印匹配的行…

11-2 RHEL8配置YUM软件仓库及安装拼音输入法

配置本地YUM源 一、虚拟机关机>>虚拟机设置>>CD/DVD,关联ISO镜像文件,勾选“启动时连接”,点确定 二、开启虚拟机, 使用root用户登录。用df -h 命令可以看到光驱已经正常连接了。如果看不到/dev/sr0,需…

探索 Vue 实例方法的魅力:提升 Vue 开发技能(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

铁塔基站数字化管理监测解决方案

截至2023年10月,我国5G基站总数达321.5万个,占全国通信基站总数的28.1%。然而,随着5G基站数量的快速增长,基站的能耗问题也逐渐日益凸显,基站的用电给运营商带来了巨大的电费开支压力,降低5G基站的能耗成为…

CCF录用率怎么看?如何挑选合适的会议

写在前面 写此文是因为有同学问我如何确定自己能投稿的会议。首先,不建议直接用他人汇总好的数据(截稿时间和录用率),如果遇到更新不及时的很有可能耽误自己的工作。 平常,我都会自己收集预计投稿时间的会议信息&…

6张思维导图,js基础(基本概念,操作符,语句,Date,函数,数组,字符串)

一,js基本概念 二 ,js操作符 三,js基本语句 四,Date 常基本用方法汇总 五,数组基本及常用方法汇总 六,字符串基本及常用方法汇总 满满的都是干货。 附送250套精选项目源码 源码截图 源码获取:…

Ansible、Saltstack、Puppet自动化运维工具介绍

本文主要是分享介绍三款主流批量操控工具Ansible、Saltstack、Puppet主要对比区别,以及Ansible和saltstack的基础安装和使用示例,如果觉得本文对你有帮助,欢迎点赞、收藏、评论! There are many things that can not be broken&am…

【Java干货教程】Stream流详解

一、Stream流的简介 1.1、Stream流的概述 Stream是Java 8 API添加的一个新的抽象,称为流Stream,以一种声明性方式处理数据集合(侧重对于源数据计算能力的封装,并且支持序列与并行两种操作方式。 Stream流是从支持数据处理操作的…

npm发布js工具包

一、创建项目 1、在github上创建一个项目,然后拉取至本地,进入项目目录2、执行 npm init 生成json文件3、创建 src/index.ts 入口文件和 src/isObject.ts 工具方法 src/index.ts export { default as isObject } from ./isObject src/isObject.ts /…

[C#]yolov8-onnx在winform部署手势识别模型

【官方框架地址】 https://github.com/ultralytics/ultralytics.git 【算法介绍】 YOLOv8 是一个 SOTA 模型,它建立在以前 YOLO 版本的成功基础上,并引入了新的功能和改进,以进一步提升性能和灵活性。具体创新包括一个新的骨干网络、一个新…

专题一:递推与递归

递归 例题 递归实现指数型枚举 从 1∼n这 n个整数中随机选取任意多个,输出所有可能的选择方案。 输入格式 输入一个整数 n。 输出格式 每行输出一种方案。 同一行内的数必须升序排列,相邻两个数用恰好 1 个空格隔开。 对于没有选任何数的方案&#xff0c…

抖店申请流程是什么?

我是电商珠珠 想要入驻抖店的人很多,但是知道流程的新手却没有几个。 从开店资料到入驻流程,我来具体的跟大家讲一讲。 第一个,新手开店资质 1、营业执照 营业执照是入驻门槛之一,营业执照类型分为两类,一类为企业…

鸿蒙4.0开发实战(ArkTS)-闹钟制作

闹钟功能要求 展示指针表盘或数字时间。添加、修改和删除闹钟。展示闹钟列表,并可打开和关闭单个闹钟。闹钟到设定的时间后弹出提醒。将闹钟的定时数据保存到轻量级数据库。 闹钟主界面 闹钟界面包括当前时间、闹钟列表、添加闹钟子组件,具体包括以下…

共享企业文件数据信息:实用方法与技巧分享

在当下快节奏的企业办公生活中,如何有效且高效的进行企业文件数据信息共享,保持企业竞争力,是许多企业团队面临的问题。 诚然,社交媒体工具的出现可以缓解企业信息共享协作的痛点。然而,多平台工具的交叉使用又使企业…

Zuul相关面试题及到案(2024)

1、什么是Zuul?它在微服务架构中有什么作用? Zuul是Netflix开源的一种提供API网关服务的应用程序,它在微服务架构中扮演着流量的前门角色。主要功能包括以下几点: 路由转发:Zuul网关将外部请求转发到具体的微服务实例…