IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 学python函数,入门小白速进 -> 正文阅读

[Python知识库]学python函数,入门小白速进

python中的函数(入门)

无论学习哪一门编程语言,都会有这样一个知识点需要学习,它就是函数。对于很多初学者来说,前面的顺序分支循环结构再加上前面我们学习的容器型数据类型等知识点,实际上对于解决一般的代码已经够用了。那为什么还要学习函数这样难理解也似乎做’无用功’的编程语法呢?在回答这个问题,我们先来看一个简单的例子。

写一个实现生成指定长度的随机验证码(有数字和英文字母构成)的函数,生成10组随机验证码

使用前面学习的分支与循环等知识,我们先来写这个代码。

import random    # 导入随机模块
rang ='1234567890abcdefghijklmnopqrstuvwsyzQWERTYUIOPASDFGHJKLZXCVBNM'  
for _ in range(10):                         # 暂且指定生成10组这样的验证码
    result = random.choices(rang,k=4)     # 暂且指定生成长度为4的验证码,choices可以实现有放回抽样
    print(' '.join(result))

但是,要是需求改变了,我们需要产生20组这样的验证码,并于要将代码中循环的10改为20,单单这样一段代码,你可能并不觉得改起来麻烦,但是,若需求改变为,产生20组长度为6的验证码,再产生30组长度为5的验证码…这时候,不止是需要改代码,而且还需要复制粘贴代码,复制多了后代码不但容易在开发时产生各种各样的问题,而且可读性并不好,可见,这样的代码,通用性并不好,使用起来也不方便,还容易出bug,特别是用户的需求频繁发生改变时,用这样的代码简直是噩梦。那么接下来再看看这样的代码。

def captcha(n,m):   # n是想要产生的组数,m指定验证码的长度
    for _ in range(n):
        ran = string.digits + string.ascii_letters   # 用string模块产生数字和英文字母
        result = random.choices(ran,k=m)
        return ' '.join(result)

    
captcha(104)

这样做后,如果用户想要生成20组长度为6的验证码,就将captcha(10,4)中的10改为20,4改为6,再要产生30组长度为5的验证码时,只需要再调用一次这个函数,输入30,5就行,即使用户再改需求,最坏情况下也最多只需要重写这个函数,并不需要去到处修改代码,可见,特别实在做工程化开发时,使用这样的代码一定是人见人爱的,而且一劳永逸。

那么,我们就来看看,这样功能强大的的函数怎样去实现。

什么是函数

实际上,编程中的函数跟数学上的函数也是很相似的东西,数学中的函数y = x ,是输入一个自变量x,然后它经过计算后,能给你返回一个对应的因变量y的东西。而编程语言中的函数也是这样一个东西,不同的是,这样的函数有时后不需要传入自变量(这样的自变量叫参数),可以传入一个自变量,有些时候需要传入多个自变量(参数),而它也可能不返回因变量或返回一个或多个因变量(返回值),这些特点使得它用起来是非常灵活的,这是它的优点。这因为这些特点实现了它的可重用性通用性。怎样定义一个这样的函数?

函数的定义

在上面的例子中,相信大家已经发现了,实际上再将之前写的代码包装成一个函数时并没有改变多少代码,而只是在原来的代码基础上加了关键字def,然后又写了一个名字加上一个(),这个加上的名字就是给函数取的一个名字,然后函数里面基本就是原来的代码,最后将要输出的结果再加上了一个return关键字,去掉了print().所以说,实际上要将一段已经写好的代码包装成一个函数并不困难。下面看一些语法和简单举的举个例子:

  • 语法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6LFjjihp-1628089850762)(D:\CsdnPhoto\函数.png)]

前面的关键字def 用来定义一个函数(告诉别人定义的是一个函数),给函数一个名字(后面还会讲到另一种函数lambda函数,不需要函数名),参数相当于自变量,可以传入一个或者多个,也可以没有,看情况而言,参数可以是任意数据类型,定义时只需要写入参数名就行并不需要像java那样写参数类型。冒号:必须要有return是返回因变量准确来说叫函数的返回值的关键字,也可以不用return返回因变量,可用print()但是不推荐,因为这样的函数是高耦合的,这样还会让调用者(使用函数的人)不知所措,他在选择使用函数时不能很清楚的知道此函数到底能返回什么样的结果。在两行代码之间的其他代码就是你要实现的功能代码,叫函数的函数体

定义一个既没有参数也没有返回值的函数

def f():         # 这样一个函数是没有使用价值的
    pass
                    # 函数的上下两行留出来(不强制)

f()     

定义一个没有参数,有返回值的函数

def add():
    return 'hello, world'

a = add()       # 用变量a来接收这个返回值
print(a)        # hello, world

定义一个对列表中的元素求和的函数

def sum(nums):
	total = 0
    for num in nums:
        if type(nums) in (int,float):   # 先判断元素是否可做加法
        	total += num
    return total

函数的创建就是这样简单,接下来,让我们看一些怎么调用这样的函数吧!

函数的调用

去使用一个函数在编程语言中叫做调用这个函数,我的理解是因为我们在使用这个函数时只是用它来解决相应的问题,但是我们达到目的后并不再需要(至少暂时不需要了)用它了,因此,不说使用这个函数,而说调用这个函数或方法(借用一下就还回去了)。

函数的调用也非常简单,python内置的函数或者我们现在写的这种函数,我们只需要直接在函数外下写出函数名,函数传入所需要的参数就实现了函数的调用了,如果函数有返回值,需要先用一个变量去接收,然后输出这个返回值,或者使用print(函数名(参数))也同样可以输出返回值。(后面还会讲到面向对象程序设计的对象的方法的调用,这里先学会简单的函数调用)

例子

1.调用前面的对列表中的元素求和的函数。

def sum(nums):
	total = 0
    for num in nums:
        if type(nums) in (int,float):   # 先判断元素是否可做加法
        	total += num
    return total


list1 = [1,5,6,7,8]
print(sum(list1))     # 参数可以是一个列表,不需要参数叫nums,
#也可以写成print(sum(nums = list1)) 输出结果是27

现在再回去看文章开头的实例代码是不是豁然开朗了呢?赶紧去试试吧!


现在再回去看文章开头的实例代码是不是能够理解了呢?赶紧去试试吧!

如果对你有帮助,不要忘记点赞、关注、评论加收藏哦!
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-05 17:18:30  更:2021-08-05 17:19:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 11:49:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码