《python爬爬乐》入门篇:函数和函数式编程

python爬虫

 

前言

所谓函数,就是把需要反复使用的一段代码放在一起,然后再取个名字,后面通过这个名字就能够调用这一段功能。

现实生活中,我们会把一些常用的功能做成工具,方便以后反复使用。比如煮饭,淘好米之后,先用大火把水烧开,再换小火,让米吸水膨化成饭,如果这时候还需要等人到齐了再吃,则需要自己控制火势,让米饭保温。但是有聪明的人根据这个流程,制作出了电饭煲,只需要把淘好的米放入电饭煲,然后再按一下“煮饭”按钮,剩下的全部由电饭煲自己搞定。而且以后想要煮饭,只需要重复使用电饭煲就行了。

在python中,使用函数的目的也是一样,我们把实现某一功能(比如打卡功能,需要打开网站,然后输入账号和密码登录,再打开个人中心页面,点击“签到”按钮)的代码定义为一个函数,在需要使用时根据这个函数的名字调用即可。

本章将介绍python常用函数,自定义函数、参数、返回值和函数调用进行详细讲解。

 

python内置函数

在前面的内容中,我们已经使用了几个python函数。如使用print()函数把数据输出到控制台;使用input()函数输入数据;使用len()函数得到字符串或列表的长度等。

在python中,还有很多这样的内置函数可直接供我们使用:

python内置函数

 

具体的各个函数用法,可以参考python官网函数介绍页面,你不用急着去官网把所有函数的用法都背下来,最常用的几个函数,你在后面学习中经常使用时,自然就记住了。而不常用的就算你背下来,过段时间不用,你也会忘记,还浪费了时间和精力。

 

自定义函数

自定义函数的语法结果如下图:

def:是用来定义函数的关键字。

functionName:是函数名,命名时最好做到见名知意。

(arg1, arg2, argn):中是参数列表,参数个数可以是零到多个,就算没有参数,这一对小括号必须保留。

冒号(:):冒号用来表示下面的内容都是函数体(函数中的语句)。函数中的内容必须使用空格缩进。

return:如果调用函数后需要有返回值,则必须加上retun关键字返回数据。

具体的用法,我们来看案例就明白了。

案例一:假设某银行的年利率是3.25,每过一年,将本金和利息作为新的本金,计算将x元的本金存入银行n年后,有多少钱。

分析:因为本金和存入年数都需要使用者来确定,所以这两项当作参数。方法体中就写计算n年后能得到多少本金的方法(简称算法)。

代码:

# 定义一个名为calcMoney的函数,有两个参数,分别是money本金,year年数
def calcMoney (money, year):
    i=1
    while i<=year :
    money = money*1.0325;
    i += 1;
    return money # 返回year后的本金money

# 存10000,5年后有多少钱
print(calcMoney(10000,5))
# 存10000,10年后有多少钱
print(calcMoney(10000,10))

函数定义好后,可以反复调用。

 

函数式编程

函数是面向过程编程的基础,什么是面向过程编程呢?面向过程编程就是把一个复杂的任务分解成一个一个简单的子任务,然后每个子任务写成一个函数即可,类似于搭积木。

而函数式编程的主要目的是为了进行数学计算。函数式编程的特点就是可以把函数作为变量使用,比如参数可以是一个函数,返回值也可以是一个函数。

示例一:定义变量指向abs函数,并调用

l = len
print(l('hello'))

示例二:创建一个处理两个字符串的函数

def add(str1, str2, f):
    return f(str1)+f(str2)

l = len
print(add('hello', 'haha', l))

示例三:返回求和函数

def add(*args): # 星号(*)参数,表示以元组的方式传入。
    def sum():
        s = 0
        for i in args:
            s += i
        return s
    return sum # 返回求和函数

f = add(23,534,22,34)
print(f())

 

匿名函数

所谓匿名函数,就是不使用def语句来定义函数。在python中使用lambda表达式来创建匿名函数。lambda表达式与def方式定义函数对比,要简单很多,lambda一般用于只有一行代码的情况,所以它只能用于比较简单的逻辑。

其语法格式为:lambda 参数列表: 逻辑表达式

示例一:求一个数的平方

f = lambda x: x * x
print(f(2))
print(f(3))

示例二:求一组数的平方

f = list(map(lambda x: x * x, [1, 2, 3, 4, 5]))
print(f)

练习

  1. 创建一个函数,打印乘法表

  2. 创建一个函数,将字符串进行加密

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值