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

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

(一)

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

位置参数

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

1 def right_triangle_area(a,b):
2     return 1/2*a*b
3
4 print(right_triangle_area(3,4))
5 # 位置参数传递

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

关键词参数传递

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

1 def right_triangle_area(a,b):
2     return 1/2*a*b
3
4 print(right_triangle_area(b=4,a=3))
5 # 关键词参数传递

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

(二)

设计自己的函数

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

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

 1 def text_create(name,msg):
 2     # 创建文件,写入信息
 3     desktop_path = ‘/Users/duwangdan/Desktop/‘
 4     # 桌面路径
 5     full_path = desktop_path + name + ‘.txt‘
 6     # 桌面路径+文件名+文件后缀
 7     file = open(full_path,‘w‘)
 8     # ‘w‘参数指写入
 9     file.write(msg)
10     # 文件中写入信息
11     file.close()
12     # 写入后关闭文件

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

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

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

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

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

1 def censored_text_create(name,msg):
2     # 创建删除敏感词后的文本函数
3     clean_msg = text_filter(msg)
4     # 过滤掉msg中的敏感词
5     text_create(name,clean_msg)
6     # 传入name和clean_msg到text_create函数中
7
8 censored_text_create(‘test‘,‘Math is Awesome!‘)
9 # 调用函数

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

完整代码如下:

 1 def text_create(name,msg):
 2     desktop_path = ‘/Users/duwangdan/Desktop/‘
 3     full_path = desktop_path + name + ‘.txt‘
 4     file = open(full_path,‘w‘)
 5     file.write(msg)
 6     file.close()
 7
 8
 9 def text_filter(word,censored_word=‘Awesome‘,change_word=‘‘):
10     return word.replace(censored_word,change_word)
11
12
13 def censored_text_create(name,msg):
14     clean_msg = text_filter(msg)
15     text_create(name,clean_msg)
16
17 censored_text_create(‘test‘,‘Math is Awesome!‘)

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

-----   End   -----

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

时间: 2024-12-20 17:03:46

产品经理学Python:参数传递方式的相关文章

产品经理学Python:条件控制

条件控制其实就是if...else...(如果...条件是成立的,就做...:反之,就做...)的使用,其基本结构是: 具体看下面这个例子: 1 def account_login(): 2 # 定义函数 3 password = input('请输入密码:') 4 # 输入密码 5 if password == '12345': 6 # 如果输入密码是12345,则登录成功 7 print('登录成功') 8 else: 9 print('密码有误,请重新输入') 10 # 否则提示密码有误,

Java和C参数传递方式的比较

java中的形参是复制实参的一份拷贝(对于引用类型则是复制引用的拷贝,在栈中的拷贝),所以在函数中改变形参是无法改变实参的值的,改变引用只是将形参所代表的引用指向另外的新的对象,而实参的引用还指向原来的对象,改变形参引用的成员当然会影响实参引用成员的值,因为他们的引用都指向同一个对象.[Java只有值传递Java只有值传递Java只有值传递,重要的事情说3遍] 示例代码: public class ExchangeValue { public static void main(String[]

【整理】--C++三种参数传递方式

在C++中,共有三种参数传递方式: 按值传递(pass by value) 地址传递(pass by pointer) 引用传递(pass by reference) (1)按值传递的过程为:首先计算出实参表达式的值,接着给对应的形参变量分配一个存储空间,该空间的大小等于该形参类型的,然后把以求出的实参表达式的值一一存入到形参变量分配的存储空间中,成为形参变量的初值,供被调用函数执行时使用.这种传递是把实参表达式的值传送给对应的形参变量,故称这种传递方式为“按值传递”. 使用这种方式,调用函数本

Java函数参数传递方式详解

在阅读本文之前,根据自己的经验和理解,大家可以先思考并选择一下Java函数的参数传递方式: A. 是按值传递的? B. 按引用传递的? C. 部分按值部分按引用? 此处暂不宣布正确答案,我们通过一个简单的例子让大家自己找答案: 1. 先定义一个类型Value Java代码   public static class Value { private String value = "value"; public String getValue() { return value; } pub

C语言函数参数传递方式

C语言中函数的参数传递方式有两种:传值.传地址. 1.传值调用 在被调用函数中开辟出一个临时的内存空间,在主调用函数进入被调用函数前,会将实参进行拷贝,拷贝的数据放在该临时内存空间中,供被调用函数使用.当被调用函数返回时,该临时内存空间即被释放. 1 #include<stdio.h> 2 3 int test_func(char *q) 4 { 5 long lAddr=&q; // 被调用时,光标选中“&q”,显示结果(随机)为:0x002df7ac {0x013058b8

&lt;转&gt;Python 参数知识(变量前加星号的意义)

csdn上的牛人就是多,加油 —————————————————————————— 过量的参数 在运行时知道一个函数有什么参数,通常是不可能的.另一个情况是一个函数能操作很多对象.更有甚者,调用自身的函数变成一种api提供给可用的应用. 对于这些情况,python提供了两种特别的方法来定义函数的参数,允许函数接受过量的参数,不用显式声明参数.这些“额外”的参数下一步再解释. 注意args和kwargs只是python的约定.任何函数参数,你可以自己喜欢的方式命名,但是最好和python标准的惯用

java中参数传递方式话题终结实例

java新手入门面临的一个经典的话题,本文意在终结这个话题,java中有说法:Java里面参数传递都是按值传递,怎么理解这句话?用文字说明恐怕不容易说明白,说明白恐怕也难以想明白. 前提 先明确一下,按值还是按引用的概念,它是来自c++语言,引用不是汉语词典中的一个词,而是c++的概念--"&"这个符号还记得吧? 为什么有这个话题呢?其一,是对按引用传递理解不透彻:其二,诸多java书籍及讨论论点并没有切中要害.?? 一句话概括,按值传参还是按引用传参,既然是参数传递方式,那么

C# 同一应用程序域不同线程之间的参数传递方式

很久没有写博客了,最近的项目不用写代码.今天没事就看看thread之间的参数传递方式,这里主要适用于运行在不同线程的两个方法之间参数传递.直接看代码 1.方法之间直接传递参数 void DemoParam() { Console.WriteLine("DemoParam:" + Thread.CurrentThread.ManagedThreadId); //Thread t = new Thread(new ParameterizedThreadStart(testparam));

基于.Net Framework 4.0 Web API开发(2):ASP.NET Web APIs 参数传递方式详解

概述:  ASP.NET Web API 的好用使用过的都知道,没有复杂的配置文件,一个简单的ApiController加上需要的Action就能工作.调用API过程中参数的传递是必须的,本节就来谈谈API使用过程中参数的传递方式. 各种参数传递方式的实现: ASP.NET Web API参数有两种传递方式,一种是请求时携带QueryString,对应API 开发中的FromUrlAttribute属性,也是参数传递默认属性,并且每个API可以含有多个此类型的参数,主要应对GET请求,但此种方式