Python中的参数是如何传递的?

本文和大家分享的主要是python中参数传递方式相关内容,一起来看看吧,希望对大家学习python有所帮助。

位置参数

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

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

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

关键词参数传递

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

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

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

(二)

设计自己的函数

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

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

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默认空值来替代,实现敏感词过滤。

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函数,可以得到过滤后的文本。

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 # 调用函数

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

完整代码如下:

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

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!’)

来源:博客园

时间: 2024-10-25 02:39:17

Python中的参数是如何传递的?的相关文章

python中函数参数的引用方式

值传递和引用传递时C++中的概念,在python中函数参数的传递是变量指向的对象的物理内存地址!!! python不允许程序员选择采用传值还是传引用.Python参数传递采用的肯定是"传对象引用"的方式.这种方式相当于传值和传引用的一种综合.如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过"传引用"来传递对象.如果函数收到的是一个不可变对象(比如数字.字符或者元组)的引用,就不能直接修改原始对象--相当于通过"传值

(转)python中的参数:*args和**kwargs

def foo(*args, **kwargs):print 'args = ', argsprint 'kwargs = ', kwargsprint '---------------------------------------'if __name__ == '__main__':foo(1,2,3,4)foo(a=1,b=2,c=3)foo(1,2,3,4, a=1,b=2,c=3)foo('a', 1, None, a=1, b='2', c=3) 输出结果如下:args = (1,

python中的参数

在Python中定义函数,可以用必选参数.默认参数.可变参数和关键字参数,这4种参数都可以一起使用,或者只用其中某些,但是请注意, 参数定义的顺序必须是:必选参数.默认参数.可变参数和关键字参数. 请看实例代码: def func(a,b,c=0,*args,**kw): print 'a=',a,'b=',b,'c=',c,'args=',args,'kw=',kw >>> func(1,2) a= 1 b= 2 c= 0 args= () kw= {} >>> fu

python中函数参数*args和**kw的区别

1.函数与参数(实参) 在python中创建函数是def,创建函数名是def f(),f函数名字,def f(a,b),这里的a,b是两个参数,函数名是自定义的,参数也是自定义,随意就好.看图如下效果: 这里f(1,2)是实参,然后调用上面的函数. 下面讲解下*args和**kw的区别. 2.*args 这里的*后面的值是自定义的,只要不是数字就行,定义成*abc,*ccc都可以,len()是函数,它的意思是返回字符串长度.然后前面的a,b是普通参数,print a print b就是回显1,2

JavaScript中函数参数的值传递和引用传递

结论:对于数字.字符串等是将它们的值传递给了函数参数,函数参数的改变不会影响函数外部的变量. 对于数组和对象等是将对象(数组)的变量的值传递给了函数参数,这个变量保存的指向对象(数组)的地址.当函数改变这个地址指向的对象(数组)的内容时,同时也改变了函数外部变量指向的对象(数组)的内容:当函数改变的是变量的地址时,实际就与函数外部的变量失去了联系,变成了完全不同的对象了,不会对函数外部对象造成改变. 很多人认为 JS 中参数有两种传递方式:数字.字符串等按值传递:数组.对象等按地址(引用)传递.

Python中的参数解包:`*`表达式和 `**`表达式

目录 1.参数解包:方法调用中的*表达式和**表达式 2.参数解包:方法定义中的*表达式和**表达式 3.在元组,列表,集合和字典中解包 4.Extended Unpacking:赋值表达式左边的*表达式 1.参数解包:方法调用中的*表达式和**表达式 如果语法*表达式出现在函数调用中,则该表达式必须是可迭代的. 这些可迭代集合的元素被视为附加的位置参数. 对于调用f(x1, x2, *y, x3, x4),如果y等于序列[y1,...,yM],则等效于调用f(x1, x2, y1, ...,

Python中带参数的装饰器

装饰器本身是用来是为一个函数是实现新的功能,并且不改变原函数的代码以及调用方式. 遇到这样一种问题: 众多函数调用了你写的装饰器,但客户有需求说,我想实现我可以随之控制装饰器是否生效. 那你就不可能在得到命令的时候去原函数头部去做删除和添加装饰器调用的命令.这是就可以用到带参数的装饰器,定义一个开关,调用装饰器的时候,把这个装饰器的开关参数给传递进去,这样当开关打开的时候装饰器生效,关闭的时候则只执行原函数的代码. 举例:开关参数为True的时候执行过程: 1 F = True #step 1

Python中 可变参数

def make_pizza(*pizzas): *pizzas : 相当于一个创建一个元组,参数放入pizzas 的元组中. def make_pizza(size,*pizzas): 需要注意的是多个参数,*pizzas 需要在形参的后面. **pizzas 表示的是 建立一个字典. 原文地址:https://www.cnblogs.com/lyjmatrix/p/10016151.html

python中特殊参数self的作用

特殊参数self的作用:self会接收实例化过程中传入的数据,当实例对象创建后,实例便会代替 self,在代码中运行. self代表的是类的实例本身,方便数据的流转.对此,我们需要记住两点: 第一点:只要在类中用def创建方法时,就必须把第一个参数位置留给 self,并在调用方法时忽略它(不用给self传参). 第二点:当在类的方法内部想调用类属性或其他方法时,就要采用self.属性名或self.方法名的格式. 1 class Chinese: # 创建类 2 3 name = '吴' # 类属