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.hqwc.cn/news/323820.html

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

相关文章

01-线程池项目背景:C++的数据库操作

从0开始学习C与数据库的联动 1.原始方式-使用MySQL Connector/C 提供的API查询 1.1 数据库预操作 我的本地电脑上有mysql数据库,里面预先创建了一个database名叫chat,用户名root,密码password。 1.2 Visual Studio预操作 在Windows上使用…

JavaScript 基础三part1.数组

JavaScript 基础三part1.数组 2.1 数组是什么2.2 数组的基本使用(1)声明(2)取值(3)一些术语(4)遍历数组 2.3 操作数组(1)修改(2)新增&…

x-cmd pkg | doggo - 现代化的 DNS 客户端

目录 简介首次用户快速实验指南功能特点类似工具与竞品进一步探索 简介 doggo 是一个由 Karan Sharma 于 2020 年使用 Go 语言开发的 DNS 客户端。它类似于 dig 命令,但旨在以现代化、简洁和可读的格式输出 DNS 查询结果。 首次用户快速实验指南 使用 x doggo 即可…

工作中人员离岗识别摄像机

工作中人员离岗识别摄像机是一种基于人工智能技术的智能监控设备,能够实时识别员工离岗状态并进行记录。这种摄像机通常配备了高清摄像头、深度学习算法和数据处理系统,可以精准地监测员工的行为,提高企业的管理效率和安全性。 工作中人员离岗…

SSM建材商城网站----计算机毕业设计

项目介绍 本项目分为前后台,前台为普通用户登录,后台为管理员登录; 管理员角色包含以下功能: 管理员登录,管理员管理,注册用户管理,新闻公告管理,建材类型管理,配货点管理,建材商品管理,建材订单管理,建材评价管理等功能。 用…

低代码UI构件程序设计基础实训一

步骤一 低代码在线调试工具 网址 低代码在线调试工具 步骤二 D盘建一个文件夹,文件夹下建两个文件夹ico和js 网上找一些图片,后缀.png,编号从0开始,图片另存到ico文件夹下 下载(右键另存为)以下四个页面…

【面试高频算法解析】算法练习6 广度优先搜索

前言 本专栏旨在通过分类学习算法,使您能够牢固掌握不同算法的理论要点。通过策略性地练习精选的经典题目,帮助您深度理解每种算法,避免出现刷了很多算法题,还是一知半解的状态 专栏导航 二分查找回溯(Backtracking&…

AI大模型与低代码开发应用的完美融合

近年来,人工智能(AI)技术的快速发展引领了许多创新的应用,而大型AI模型和低代码开发平台是这一进展的两个重要方面。本文将探讨AI大模型与低代码开发应用的关系,以及如何利用它们共同推动技术创新和业务发展。 AI大模型…

Flowable6.8适配人大金仓 达梦

目录 前言 一、Flowable6.8 适配人大金仓 1.引入postgreSQL依赖 2.配置驱动 3.总结 二,Flowable 6.8 适配DMV8 1.引入达梦依赖 2.配置数据库 3.确认liquibase的版本 4.liquibase4.x的适配步骤 4.1 在项目中新建liquibase.database.core 包 4.2 创建Oracl…

如何实现无人机识别功能

无人机识别算法可以基于不同的传感器和技术,结合多种方法进行实现。以下是一些常见的无人机识别算法和技术: 视觉识别: 图像处理: 使用计算机视觉技术对无人机图像进行处理,包括特征提取、目标检测和跟踪等。深度学习&…

【模拟电路】软件Circuit JS

一、模拟电路软件Circuit JS 二、Circuit JS软件配置 三、Circuit JS 软件 常见的快捷键 四、Circuit JS软件基础使用 五、Circuit JS软件使用讲解 欧姆定律电阻的串联和并联电容器的充放电过程电感器和实现理想超导的概念电容阻止电压的突变,电感阻止电流的突变LR…

年度最整洁的海盗3.0版本

在修改海盗3.0客户端源码的时候,一直都存在这样的一个问题: 客户端在某些特定的情况下,会报内存错误导致程序崩溃。 经过调试,发现是那个MindPower3D的dll,在跳转地图等情况下卸载清理内存的时候,会偶发出…