Python中的自定义函数学习笔记
作者:iCode0410 发布时间:2023-11-21 15:56:56
定义一个什么都不做的函数
>>> def a():
... pass
...
>>> def printHello():
... print("hello")
...
>>> printHello()
hello
>>> callable(printHello)
True
顾名思义,callable函数用于判断函数是否可以调用;
有书上说,callable在Python3.0中已经不再使用,而使用hasattr(func, '__call__')代替;
>>> hasattr(printHello, '__call__')
True
>>> printHello.__doc__
>>> def printHello():
... 'just print hello'
... print('hello')
...
>>> printHello.__doc__
'just print hello'
每个函数都有一个__doc__属性,双下划线表示它是个特殊属性;
内建的help函数非常有用,可以提供有关方法/函数的帮助信息;
>>> help(printHello)
函数的注释信息包含其中;
虽然printHello函数没有使用return,可以用一个变量接收返回值:
>>> result = printHello()
hello
>>> result
>>> print(result)
None
None是Python的内建值,类似Javascript的undefined么?
定义一个可以接收参数的printStr,用以打印字符串
>>> def printStr(str):
... print(str)
…
>>> printStr("hello")
hello
像C++一样,Python支持默认参数
>>> def printStr(str="nothing"):
... print(str)
..
>>> printStr()
nothing
再来看看传参方式
>>> a = [1,2]
>>> def try_change_list(a):
... a[:] = [1,1,1]
...
>>> try_change_list(a)
>>> a
[1, 1, 1]
Python的传参可以理解为按值传递(同java,Javascript)?
BTW:如果不想让try_change_list改变原来的对象,可以传入a[:]
>>> a = [1,2]
>>> try_change_list(a[:])
>>> a
[1, 2]
当然,这里做的是浅拷贝,可以使用copy模块的deepcopy来进行深拷贝;
除了支持参数默认值,还支持命名传参:
>>> def sum(a=0, b=0):
... return a + b;
...
>>> sum(2,2)
4
>>> sum(b = 3, a = 4)
7
这种特性在参数较多时比较好用;
来看一下,Python对可变参数列表的支持:
>>> def sum(*args):
... s = 0;
... for i in args:
... s += i;
... return s
...
>>> sum(1,2,3,4)
10
这是一个简单的求和例子,不同于C/C++的静态类型,Python并不会限制传入sum函数的参数的类型:
>>> def printArs(*args):
... for a in args:
... print(a)
...
>>> printArs(2, 3, [2,2], (2,), 'df')
2
3
[2, 2]
(2,)
df
>>> printArs(*(2, 3, [2,2], (2,), 'df'))
2
3
[2, 2]
(2,)
df
>>> printArs(*[2, 3, [2,2], (2,), 'df'])
2
3
[2, 2]
(2,)
df
这里的args对应于Javascript的arguments;
除了使用使用元组(tuple)接收可变参数,还可以使用dictionary接收命名参数:
>>> def printArs(**args):
... for k in args:
... print(repr(k) + " = " + repr(args[k]))
...
>>>
>>> printArs(name='wyj', age=24)
'name' = 'wyj'
'age' = 24
>>> printArs(**{'name':'wyj', 'age':24})
'name' = 'wyj'
'age' = 24
当然,更复杂地,可以混合使用*arg, **arg, 默认值特性:
猜你喜欢
- 概述PHP有着众多的内置函数,其中大多数函数都被开发者广发使用。但也有一些同样有用却被遗忘在角落,本文将介绍7个鲜为人知功能却非常酷的函数。
- 在近几年Python的呼声越来越高,很多刚开始起步想要学习编程的朋友都会犹豫要不要选择学习Python,毕竟作为人工智能时代的首选语言这个诱
- 1.现在我本机系统已内置python2.62.下载进行源码安装复制链接下载到/root/mypackage,解压接着mkdir /usr/l
- 一个将人民币数字转化为大写的asp函数,可以准确读出数字的大写,而不是简单的将数字翻译为大写。有了这个工具大家就可以很方便的写出大写的人民币
- WEB开发者不光要解决程序的效率问题,对数据库的快速访问和相应也是一个大问题。希望本文能对大家掌握MySQL优化技巧有所帮助。1. 优化你的
- 本文实例讲述了Python实现删除列表中满足一定条件的元素。分享给大家供大家参考,具体如下:从列表中删除满足一定条件的元素。如:删除一个列表
- 在sql语句中,如果查找某个文本字段值为空的可以用select * from 表 where 字段=''但是如果
- 本文实例讲述了js实现的全国省市二级联动下拉选择菜单。分享给大家供大家参考。具体如下:运行效果截图如下:具体代码如下:<!DOCTYP
- 递归是以相似的方式重复项目的过程。同样适用于编程语言中,如果一个程序可以让你调用同一个函数被调用的函数,递归调用函数内使用如下。func r
- 1、为图片加入水印功能 Dim Jpeg Set Jpeg = Server.Create
- 为什么要页面静态化?1.动态文件执行过程:语法分析-编译-运行2.静态文件,不需要编译,减少了服务器脚本运行的时间,降低了服务器的响应时间,
- SQL语句更改表所有者SQL语句更改表所有者单个修改所有者sql语句如下:查询分析器输入:EXEC sp_changeobject
- jscript 5.7 发布修复了不少ie javascript内存泄露的问题。但是leak依然存在。当我们频繁使用 setInterval
- asp读取access数据库表名称的代码:<%strConn="DBQ="+server.mappath(&quo
- PDO::rollBackPDO::rollBack — 回滚一个事务(PHP 5 >= 5.1.0, PECL pdo >=
- 对于个人站长来说,如何能使自己的网站与众不同、充满个性,一直是不懈努力的目标。除了尽量提高页面的视觉效果、互动功能以外,如果能在打开网页的同
- <% class menusPublic Title, ID, Image, TitleColor, Target, Backgrou
- js 对url进行编码和解码三种编码和解码函数encodeURI和 decodeURI它着眼于对整个URL进行编码,因此除了常见的符号以外,
- 在用HTML(HyperText Markup Language,超文本链接标示语言)语言编写Web页面时,由于所用的Web浏览器对HTML
- 1、jsp前端<%-- Created by IntelliJ IDEA. User: Lenovo Date: 2020/6/19