Python学习笔记 之 函数
函数
函数式编程最重要的是增强代码的重用性和可读性
- 定义和使用
def 函数名(参数):
...
函数体
...
返回值
函数的定义主要有如下要点:
def:表示函数的关键字
函数名:函数的名称,日后根据函数名调用函数
函数体:函数中进行一系列的逻辑计算
参数:为函数体提供数据
返回值:当函数执行完毕后,可以给调用者返回数据
举例:
def mail():
n = 123
n += 1
print(n)
mail()
f = mail
f()
结果:
124
124
1-1 返回值
函数是一个功能块,该功能到底执行成功与否,需要通过返回值来告知调用者。
def show():
print('a')
return [11,22]
print('b')
show()
结果:
a
1-2 参数
函数中有三种不同的参数:
- 普通参数
- 默认参数
- 动态参数
普通参数
def show(a1,a2):
print(a1,a2) show(11,22)
结果:
11 22
默认参数:默认参数需要放在参数列表最后
def show(a1,a2=99):
print(a1,a2) show(11)
结果:
11 99
指定参数
def show(a1,a2):
print(a1,a2) show(a2=123,a1=190)
结果:
190 123
动态参数
def show(*arg):# * - 接收参数并转换元组
print(arg,type(arg)) show(1,56,78,8979)
结果:
(1,56,78,8979) <class 'tuple'>
def show(**arg): # ** - 接收参数并转换字典
print(arg,type(arg)) show(n1=78,uu=123)
结果:
{'uu': 123, 'n1': 78} <class 'dict'>
def show(*arg1,**args):# 一个*的在前,两*在后
print(arg1,type(arg1))
print(args,type(args)) show(12,34,34,54,n9=33,n2=99)# 一个*的在前,两*在后
结果:
(12, 34, 34, 54) <class 'tuple'>
{'n2': 99, 'n9': 33} <class 'dict'>
def show(*arg1,**args):# 一个*的在前,两*在后
print(arg1,type(arg1))
print(args,type(args)) l = (11,22,3,4)
d = {'n1':89,'k1':'hello'}
show(l,d)
结果:
((11, 22, 3, 4), {'k1': 'hello', 'n1': 89}) <class 'tuple'>
{} <class 'dict'>
很明显,结果不是我们想要的。关键是如果我们使用show(l,d)
那么和我们使用show(1,56,78,8979) 没有什么区别。所以,为了解决这种冲突问题,只需要在 l 前加一个*,在 d 前加两个 * 即可:
def show(*arg1,**args):# 一个*的在前,两*在后
print(arg1,type(arg1))
print(args,type(args)) l = (11,22,3,4)
d = {'n1':89,'k1':'hello'}
show(*l,**d)
结果:
(11, 22, 3, 4) <class 'tuple'>
{'n1': 89, 'k1': 'hello'} <class 'dict'>
符合我们的要求。
动态参数实现字符串格式化:
s1 = "{0} is {1}"
ret = s1.format('Young','handsome')
print(ret)
结果:
Young is handsome
s1 = "{0} is {1}"
l = ['Young','handsome2']
ret = s1.format(*l)
print(ret)
结果:
Young is handsome2
s1 = '{name} is {value}'# 字典这里就不是{0}、{1}了,而是用{key}、{value}
ret = s1.format(name='Young',value='handsome')
print('第一:',ret) s2 = '{name2} is {key}'
d = {'name2':'Young','key':'smart'}
ret = s2.format(**d)
print('第二:',ret)
结果:
第一: Young is handsome
第二: Young is smart
2. 内置函数
any : 只要有一个是真的就是真的
ord 和 chr配合使用
chr ord random.randint 可以生产验证码
enumerate
eval
map
filter
li=[1,22,33,45,74,788]
def func(num):
if num>33:
return True
else:
return False
n = filter(func,li)
print(list(n))
结果:
[45, 74, 788]
将列表中大于 33 的元素拿出来
Python学习笔记 之 函数的更多相关文章
- Python学习笔记之函数
这篇文章介绍有关 Python 函数中一些常被大家忽略的知识点,帮助大家更全面的掌握 Python 中函数的使用技巧 1.函数文档 给函数添加注释,可以在 def 语句后面添加独立字符串,这样的注释被 ...
- 小甲鱼:Python学习笔记003_函数
>>> # 函数>>> def myFirstFunction(params1,params2...): print("这是我的第一个函数!") ...
- Python学习笔记 - day6 - 函数
函数 函数在编程语言中就是完成特定功能的一个词句组(代码块),这组语句可以作为一个单位使用,并且给它取一个名字.可以通过函数名在程序的不同地方多次执行(这叫函数的调用).函数在编程语言中有基本分为:预 ...
- Python学习笔记系列——函数
今年下半年的计划主要是Python和Mysql了,公司不方便看书和视频,就照着廖雪峰的Python网站开始看了.以下纯为个人笔记记录,若是想系统学习的小伙伴还是看这里的好一些,毕竟系统.https:/ ...
- Python学习笔记(五)函数和代码复用
函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Python提供了许多内建函数,比如print().同样,你也可以自己创建函数, ...
- python学习笔记(4)--函数
1.函数 函数是指将一组语句的集合通过一个名字封装起来.要想执行这个函数,只需调用其函数名即可. 函数的特性: 1.减少重复代码 2.使程序变的课扩展 3.使程序变得易维护 语法定义: def pri ...
- Python学习笔记-Day3-python函数
1.为什么要用函数? 提高代码重复利用率,减少代码冗余.封装模块化代码,便于调用 2.函数声明定义(注意:函数先声明后调用) 注意:函数的reture循环中的exit功能一样(函数不执行,终止) 函数 ...
- Python学习笔记11—函数
建立第一个函数 /usr/bin/env Python #coding:utf-8 def add_function(a,b): c = a+b print c if __name__==" ...
- Python学习笔记7-把函数当参数传递、指定可变参数
把函数当参数传递 # 函数参数传递 # 面向对象编程就是把对象传来传去 # 面向函数编程就是把函数传来传去 def mytest(num): return num * 2 # # 不光可以传递变量,还 ...
- Python学习笔记_week3_函数
一.介绍 1.面向对象(华山派)--->类(独门秘籍)--->class(定义的关键字) 2.面向过程(少林派)--->过程--->def 3.函数式编程(逍遥派)---> ...
随机推荐
- 实现Discuz论坛客户端应用源码
通过使用该源码,开发者可以迅速地将Discuz论坛迁移到Android客户端中.不需要任何的开发工作即可拥有属于自己论坛的Android客户端 源码下载:http://code.662p.com/vi ...
- IOS开发之功能模块--输入框随着键盘的位置移动而移动
废话不多说,先直接上效果图: 先熟悉一下在Cocoa框架中会用到的key键: 然后直接上Demo的源码截图: 看代码之前,补充说一句,Demo中的文本框以及文本框的背后灰色的View是通过storyb ...
- 2-C程序结构
一.代码分析 打开项目中的main.c文件(C程序的源文件拓展名为.c),可以发现它是第一个C程序中的唯一一个源文件,代码如下: #include <stdio.h> #include & ...
- js控制复选框checkbox 只能单选
我们在页面经常会用到单选框,来提供单值选在字段,但是有一个问题就是:一旦选择了就不能去除(即--只要选择了就不能再以空值提交了). 所以为了解决这个问题,用复选框限制单选是一个不错的选择 <sc ...
- 聊下git pull --rebase
有一种场景是经常发生的. 大家都基于develop拉出分支进行并行开发,这里的分支可能是多到数十个.然后彼此在进行自己的逻辑编写,时间可能需要几天或者几周.在这期间你可能需要时不时的需要pull下远程 ...
- .NET/ASP.NET MVC(模块化开发AraeRegistration)
阅读目录: 1.开篇介绍 2.AreaRegistration注册路由(传递路由上下文进行模块化注册) 1]开篇介绍 ASP.NET Routing 路由功能非常强大,设计的也很巧妙:如果说ASP.N ...
- MongoDB学习笔记~大叔分享批量添加—批量更新—批量删除
回到目录 说它是批量操作,就是说将集合对象一次提交到服务器,并对数据进行持久化,如果您的代码是一次一次的提交,那不算是批量操作!在之前的mongodb仓储中并没有对批量更新和批量删除进行实现,而今天在 ...
- 集群(cluster)和高可用性(HA)的概念
1.1 什么是集群 简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源.这些单个的计算机系统就是集群的节点(node).一个理想的集群是,用户从来不会意识到集群系统 ...
- 11、只允许在主目录下上传和下载文件,不允许用putty登录
创建用户xiao, 使其只允许在用户主目录 (/var/www/html)下上传和下载文件,不允许用putty登录 (为了安全起见,不给过多的权限) 1.创建xiao用户 [root@localh ...
- Media Queries 详解
Media Queries直译过来就是“媒体查询”,在我们平时的Web页面中head部分常看到这样的一段代码: <link href="css/reset.css" rel ...