这是关于Python的第5篇文章,主要介绍下参数传递方式和如何设计自己的函数。

(一)

本篇主要介绍2种参数传递方式。

位置参数

调用函数时,根据函数定义的参数位置来传递参数。

 def right_triangle_area(a,b):
     return 1/2*a*b

 print(right_triangle_area(3,4))
 # 位置参数传递

求直角三角形面积,a、b分别为两条直角边,这里调用函数时使用的是位置参数传递。在位置参数传递中,参数的顺序是不可改变的。

关键词参数传递

在调用函数时,通过“键=值”的形式加以指定。可以让函数更加清晰、容易使用,无需考虑参数顺序。

 def right_triangle_area(a,b):
     return 1/2*a*b

 print(right_triangle_area(b=4,a=3))
 # 关键词参数传递

还有一些类型是默认参数和可变参数等,目前我暂时用不到,就不做详细分享,有兴趣的可以自行百度。

(二)

设计自己的函数

之前介绍了字符串的方法和如何创建函数,这里将前面的学到的内容整合起来,设计一个简易的敏感词过滤器。

1. 传入参数name(文件名)和msg(信息内容)就可以在桌面写入文件名称和内容的函数text_create,如果桌面没有这个可以写入的文件时,会创建一个再写入。

 def text_create(name,msg):
     # 创建文件,写入信息
     desktop_path = '/Users/duwangdan/Desktop/'
     # 桌面路径
     full_path = desktop_path + name + '.txt'
     # 桌面路径+文件名+文件后缀
     file = open(full_path,'w')
     # 'w'参数指写入
     file.write(msg)
     # 文件中写入信息
     file.close()
     # 写入后关闭文件

在上一篇《产品经理学Python:学会创建并调用函数》中提到,定义函数后需要return返回结果。在Python中,return是可选项,没有return也可以直接定义函数并顺利调用,当不写时,代表返回值是‘None’。

这时敏感词过滤器的第一部分已完成。

2. 定义一个名为text_filter的函数,传入参数word,cencored_word(敏感词)和changed_word(替换词),cencored_word默认给定‘Awesome’,用changed_word默认空值来替代,实现敏感词过滤。

 def text_filter(word,censored_word='Awesome',change_word=''):
     # 文本过滤函数
     return word.replace(censored_word,change_word)
     # 用replace()方法替换敏感词

3. 定义一个名为censored_text_create的函数,传入参数name(文件名),msg(信息),使用第2个函数text_filter,将传入的msg过滤后储存在clean_msg中,再将传入的name和过滤好的clean_msg作为参数传入text_create函数中,调用censored_text_create函数,可以得到过滤后的文本。

 def censored_text_create(name,msg):
     # 创建删除敏感词后的文本函数
     clean_msg = text_filter(msg)
     # 过滤掉msg中的敏感词
     text_create(name,clean_msg)
     # 传入name和clean_msg到text_create函数中

 censored_text_create('test','Math is Awesome!')
 # 调用函数

完成以上三步后,我们可以得到自己设计的文本过滤器了。

完整代码如下:

 def text_create(name,msg):
     desktop_path = '/Users/duwangdan/Desktop/'
     full_path = desktop_path + name + '.txt'
     file = open(full_path,'w')
     file.write(msg)
     file.close()

 def text_filter(word,censored_word='Awesome',change_word=''):
     return word.replace(censored_word,change_word)

 def censored_text_create(name,msg):
     clean_msg = text_filter(msg)
     text_create(name,clean_msg)

 censored_text_create('test','Math is Awesome!')

操作环境:Python版本,3.6;PyCharm版本,2016.2;电脑:Mac

-----   End   -----

作者:杜王丹,微信公众号:杜王丹,互联网产品经理。

Python入门:参数传递方式的更多相关文章

  1. Python 关于Python函数参数传递方式的一点探索

    关于Python函数参数传递方式的一点探索 by:授客 QQ:1033553122 实践代码 #!/usr/bin/env python # -*- coding:utf-8 -*- __author ...

  2. 产品经理学Python:参数传递方式

    这是关于Python的第5篇文章,主要介绍下参数传递方式和如何设计自己的函数. (一) 本篇主要介绍2种参数传递方式. 位置参数 调用函数时,根据函数定义的参数位置来传递参数. def right_t ...

  3. python函数调用时参数传递方式

    python函数调用时参数传递方式 C/C++参数传递方式 对于C程序员来说,我们都知道C在函数调用时,采用的是值传递,即形参和实参分配不同的内存地址,在调用时将实参的值传给实参,在这种情况下,在函数 ...

  4. Python入门篇-函数、参数及参数解构

    Python入门篇-函数.参数及参数解构 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.函数概述 1>.函数的作用即分类 函数 数学定义:y=f(x) ,y是x的函数,x ...

  5. python入门简介

    Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC ...

  6. Python基本语法[二],python入门到精通[四]

    在上一篇博客Python基本语法,python入门到精通[二]已经为大家简单介绍了一下python的基本语法,上一篇博客的基本语法只是一个预览版的,目的是让大家对python的基本语法有个大概的了解. ...

  7. Python学习【第二篇】Python入门

    Python入门 Hello World程序 在linux下创建一个叫hello.py,并输入 print("Hello World!") 然后执行命令:python hello. ...

  8. 老鸟的Python入门教程

    转自老鸟的Python入门教程 重要说明 这不是给编程新手准备的教程,如果您入行编程不久,或者还没有使用过1到2门编程语言,请移步!这是有一定编程经验的人准备的.最好是熟知Java或C,懂得命令行,S ...

  9. Python自动化运维之1、Python入门

    Python简介 python是吉多·范罗苏姆发明的一种面向对象的脚本语言,可能有些人不知道面向对象和脚本具体是什么意思,但是对于一个初学者来说,现在并不需要明白.大家都知道,当下全栈工程师的概念很火 ...

随机推荐

  1. 【转载】屏幕坐标向3维坐标的转化-DXUT的CD3DArcBall类

    原文:http://blog.csdn.net/bluekitty/article/details/6070828 3D应用程序中,我们可以通过鼠标进行空间中物体的旋转和视角的变换等,而鼠标的移动是2 ...

  2. P5231 [JSOI2012]玄武密码

    P5231 [JSOI2012]玄武密码 链接 分析: 首先对所有询问串建立AC自动机,然后扫描一遍母串,在AC自动机上走,没走到一个点,标记这个点走过了,并且它的fail树上的祖先节点也可以访问到( ...

  3. 使用终端命令行将本地项目上传到Github

    使用终端命令行将本地项目上传到Github 转自https://blog.csdn.net/fishball1/article/details/52020305 对于IOS开发者来说,Github的使 ...

  4. kali更新后窗口不能适应屏幕的解决方案

    终端执行 systemctl restart open-vm-tools 当然,也可以加入到启动项来实现自启动

  5. Python Machine Learning: Scikit-Learn Tutorial

    这是一篇翻译的博客,原文链接在这里.这是我看的为数不多的介绍scikit-learn简介而全面的文章,特别适合入门.我这里把这篇文章翻译一下,英语好的同学可以直接看原文. 大部分喜欢用Python来学 ...

  6. 使用JDBC连接MySQL数据库

    Java数据库连接(Java DataBase connectivity简称JDBC) 下载JDBC驱动:https://dev.mysql.com/downloads/connector/j/ Wi ...

  7. 阿里云rds 磁盘空间满导致实例锁定

    1.RDS 数据日志已经快满了, 导致数据库不能写入,只读. 2. Binlog日志的保存及清理规则 MySQL实例的空间内默认清理binlog日志的规则如下: 实例空间内默认会保存最近18个小时内的 ...

  8. python的变量的命名规则以及定义

    1.变量,指计算机中存储数据的空间 2.变量的命名方式:变量名 = 值 3.变量的命名规定(标识符的命名规定): 只能由数字,字母,下划线组成(可以用中文但是不推荐) 不能以数字开头 不能与关键词重名 ...

  9. Python之NMAP详解

    一.NMAP简介 NMap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包. nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端.确定哪些服务运行在哪些连 ...

  10. Unity3d — — UGUI之Box Collider自适应大小

    NGUI下给Sprite/image添加collider后能自适应大小,但是在UGUI下Collider是默认在(0,0)位置,size为0 因此写了个简单的脚本,效果如下(最后附代码) 1.如下图添 ...