ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【Python从入门到实战】第五篇:❤️神奇的函数会魔法?❤️

2021-10-12 16:34:25  阅读:207  来源: 互联网

标签:word 函数 Python text 魔法 参数 msg 第五篇


导语

“上半年有太多遗憾,来不及后悔...

那就希望下半年更好吧再为自己多努力一点,每天多努力一点”

                                                                   ————致努力的自己

经过前面几篇文章,相信大家对Python有了一个基本的认识!

那么上一篇文章小编详细的介绍完《变量与字符串》之后,今天给大家讲一讲函数到底都会哪些魔法呢?

正文

一、认识函数

图片

 

 

 

通过观察规律其实不难发现,Python 中所谓的使用函数,就是把你要处理的对象放到一个名字后

面的括号里。简单来说,函数就是这么使用的,往里面塞东西就可以得到处理结果。这样的函数在

Python 中还有这些:

内置函数就是Python自带的,可以直接使用,其中一些内建函数很实用,但是另外一些就不常用,

如果你感兴趣的话附上: Python 官网中各个函数的介绍,有兴趣深入了解的话可以看一眼。

二、开始创建函数

图片

 

 

我们需要学会使用已有的函数,更需要学会创建新的函数。

2.1 小例子

先试着在命令行/终端中进入 Python 环境,输入这样的公式:

看着有点眼熟吧?第一个是数学的梯形计算公式,第二个是物理的摄氏度与华氏度的转换公式。

函数是编程中最基本的魔法,但同时一切的复杂又都隐含其中。

2.2常用词

它的原理和我们学习的数学公式相似,但是并不完全一样,等到后面你就知道为什么这么说了,这里面先介绍几个常见的词:

  • def(即 define,定义)的含义是创建函数,也就是定义一个函数。
  • arg (即 argument,参数)有时你还能见到这种写法:parameter,二者都是参数的意思但是稍有不同,这里不展开说了。
  • return 即返回结果。 好,现在我们读一遍咒语:Define a function named ‘function’ which has two arguments : arg1 and arg2,returns the result——‘Something’ 是不是很易读很顺畅?代码的表达比英文句子更简洁一点:

需要注意的是:

  • def 和 return 是关键字(keyword),Python 就是靠识别这些特定的关键字来明白用户的意图,实现更为复杂的编程。像这样的关键字还有一些,在后面的章节中我们会细致讲解。

  • 闭合括号后面的冒号必不可少,而且非常值得注意的是你要使用英文输入法进行输入,否则就是错误的语法,如果你在 Pycharm中输入中文的冒号和括号,肯定是提示错误的。

  • 如果在Pycharm中冒号后面回车(换行),你会自动地得到一个缩进。函数缩进后面的语句被称作是语句块(block),缩进是为了表明语句和逻辑的从属关系,是 Python 最显著的特征之一。很多初学者会忽视缩进问题,导致代码无法成功运行,需要特别注意。

现在我们看一下之前提到的摄氏度转化公式,按照上面定义函数的方法来实现一遍。我们把摄氏度

转化定义为函数 fahrenheit_Converter() ,那么将输入进去的必然是摄氏度(Celsius)的数值,

我们把 C 设为参数,最后返回的是华氏度(fahrenheit)的数值,我们用下面的函数来表达,输入代码:

输入完以上代码后,函数定义完成,那么我们开始使用它。我们把使用函数这种行为叫做“调用”

(call),你可以简单地理解成你请求 Python 帮你去做一件事情,就像是我们之前学习到的函数

len()一样:“请帮我测量这个(对象)的长度,并将结果打印出来。”

好,到了这里函数的定义和基本用法你就已经了解,在很长一段时间内你知道上面所讲的这些内容就基本够用了!

三、传递参数与参数类型

图片

 

 

前面说了关于函数定义和使用,这一节讲下参数。

我们是通过打出函数的名称并向括号中传递参数实现对函数的调用(call),即只要把参数放进函数的括号中即可,就像是这样:

fahrenheit_converter(35)
fahrenheit_converter(15)
fahrenheit_converter(0)
fahrenheit_converter(-3)

3.1传参的方式

事实上,传递参数的方式有两种:

 3.2 小例子

从梯形的数学公式开始入手,首先还是创建函数。

我们把函数的名称定为 trapezoid_area,也就是梯形面积,设定参数为 base_up(上底),

base_down(下底),height(高),每一个都用英文输入法的逗号隔开。梯形的面积需要知道这

三个值才能求得,因此对于构造梯形面积的函数来说,这三个参数缺一不可。

def trapezoid_area(base_up, base_down, height):
     return 1/2 * (base_up + base_down) * height

接下来我们开始调用函数。

trapezoid_area(1,2,3)

不难看出,填入的参数 123 分别对应着参数 base_upbase_down 和 height。 这种传入参数的方式被称作为位置参数。接着是第二种传入方式:

trapezoid_area(base_up=1, base_down=2, height=3)

在调用函数的时候,我们将每个参数名称后面赋予一个我们想要传入的值。这种以名称作为一一对

应的参数传入方式被称作是关键词参数

四、设计自己的函数

我们将上面各种所有知识进行整合,来设计一个简易的敏感词过滤器,不过在这之前,先来认识一

个新的函数一一open

这个函数使用起来很简单,只需要传入两个参数就可以正常运转了:文件的完整路径和名称,打开的方式。

先在桌面上创建一个名为 text.txt 的文件。Windows 用户在桌面点击右键唤出菜单创建即可,Mac

用户则打开 Pages 创建文件后点击导出格式选择 txt 格式即可。现在我们使用 open 函数打开它:

open('/Users/Hou/Desktop/text.txt')

如果是 Windows 用户,应该像这样写你的路径:

open('C://Users/Hou/Desktop/')

如果你照着代码敲入的话其实这时候文件应该已经是打开的了,但是……貌似我们看不出来,所

以,我们再认识一个新的方法一一write 。

file = open('/Users/Hou/Desktop/text.txt','w')
file.write('Hello World')

写完后我们运行程序看看效果:

 掌握了 open 与 write 的基本用法之后,我们就可以开始着手设计函数了,需求是这样的:传入参

数 name 与 msg 就可以在桌面写入文件名称和内容的函数text_create,并且如果当桌面上没有这

个可以写入的文件时,就要创建一个之后再写入。

def text_create(name, msg):   
    desktop_path = '/Users/Hou/Desktop/'    
    full_path = desktop_path + name + '.txt' 
    file = open(full_path,'w')             
    file.write(msg) 
    file.close() 
    print('Done')
text_create('hello','hello world') # 调用函数

我们来逐行解释这段代码。

  • 第一行:定义函数的名称和参数;
  • 第二行:我们在最开始知道,open 函数要打开一个完整的路径,所以首先是桌面路径;
  • 第三行:我们给文件起什么名字,就是要传入的参数加上桌面路径再加上后缀就是完整的文件路径了;
  • 第四行:打开文件,'w'参数代表作为写入模式,意思是:如果没有就在该路径创建一个有该名称文本,有则追加覆盖文本内容;
  • 第五行:写入传入的参数 msg,即内容;
  • 第六行:关闭文本。

这样一来敏感词过滤器的第一部分我们就完成了。顺带一提,这个函数就是我们在前面提及到的并

不需要 return 也能发挥作用的函数,最后的 print 仅仅是为了表明上面的所有语句均已执行,一

个提示而已。接下来我们实现第二部分,敏感词过滤,需求是这样的:定义一个为函数 text_filter

的函数,传入参数 word,cencored_word 和 changed_word实现过滤,敏感词 cencored_word默

认为‘lame’,替换词 changed_word 默认为‘Awesome’。现在继续:

def text_filter(word,censored_word = 'lame',changed_word = 'Awesome'):
    return word.replace(censored_word, changed_word)
text_filter('Python is lame!')     # 调用函数

这个函数就简单的多了,第一行我们按照设定默认参数的方式来定义函数,第二行直接返回使用

replace 处理后的结果。现在两个函数均已完成,本着低风险的原则,你可以尝试调用一下函数看

看返回结果。

现在我们试着解决一个更复杂的问题,把两个函数进行合并:创建一个名为 text_censored_create

的函数,功能是在桌面上创建一个文本,可以在其中输入文字, 但是如果信息中含有敏感词的话

将会被默认过滤后写入文件。其中文本的文件名参数为 name,信息参数为 msg,你可以先试着自

己写一下,写完了再对照看下:

def censored_text_create(name, msg):
    clean_msg = text_filter(msg)
    text_create(name,clean_msg)
censored_text_create('Try','lame!lame!lame!') # 调用函数

我们使用第一个函数,将传入的 msg 进行过滤后储存在名为 clean_msg 的变量中,再将传入的

name 文件名参数和过滤好的文本 clean_msg 作为参数传入函数 text_create 中,结果我们会得到

过滤后的文本。完成之后,你就会得到一个文本过滤器了!

3.3 数学公式

但是如果你确实需要解决许多数学上的问题,可以参考以下表格,至于怎么用,多尝试就知道了。

一定要敢于尝试,反正电脑也不会因为你的一行代码爆炸。

总结

好了,到这里你就掌握了函数的基本概念和常用方法。

下一步,我们会继续学习更深一步的循环与判断。

 学习交流基地:

好啦!本次文章就到这里了~如有想跟着小编一起学习交流的,欢迎大家!记得三连哦~

源码基地:点击即可加入哦!文章的一些免费代码、解答等都可以在这里进行!

标签:word,函数,Python,text,魔法,参数,msg,第五篇
来源: https://blog.csdn.net/xy258009/article/details/120723816

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有