循序渐进Python3(三) -- 0 -- 初识函数
函数
如果我们要计算一个圆的面积,就需要知道它的半径,然后根据公式S=3.14*r*r算出它的面积,如果我们要算100个圆的面积,则每次我们都需要写公式去计算,是不是很麻烦,但是有了函数的话,我们就不再每次写S=3.14 *r*r, 而是把计算圆面积的功能写到一个函数里比如说s=areacircle(r),然后每次求面积的时候,只要把半径传递给函数就可以实现计算圆面积,这样我 们写代码就简单多了。这就是函数的功能。在编程中,函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段,能提高应用的模块性,和代码的重 复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
那么,Python中如何定义函数呢?
定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
定义一个简单的无参数的函数
>>> def test1():
... print('Hello,World!')
...
>>> test1()
Hello,World!
定义一个有参数的,求和函数
|
1
2
3
4
5
6
7
|
def sum(a,b): #定义函数 ret=a+b #函数体 return ret #函数返回print(sum(1,2)) #调用函数并打印出结果 #如果没有return语句,函数执行完毕后也会返回结果,只是结果为None,函数执行到return就会结束,不再执行函数体内其他代码 |
函数的参数
函数有三种不同的参数:
- 普通参数
- 默认参数
- 动态参数
普通参数:
# ######### 定义函数 ######### # name 叫做函数func的形式参数,简称:形参
def func(name):
print(name) # ######### 执行函数 #########
# 'xiaoyao' 叫做函数func的实际参数,简称:实参
func('xiaoyao')
默认参数:
>>> def func(name, age = 18):
... print("%s:%s" %(name,age))
...
>>> func('xiaoyao') # 默认参数在不指定的时候,就是默认值
xiaoyao:18
>>> func('xiaoyao',20) # 一旦指定,就不再使用默认值
xiaoyao:20 注:默认参数需要放在参数列表最后,可以有多个默认参数
指定参数:
>>> def func(name, age):
... print("%s:%s" %(name,age))
...
>>> func(age=20,name='xiaoyao') # 可以通过形参名称,不按顺序的传入参数
xiaoyao:20
动态参数:
1.*args
>>> def chao(*args): # *args 具有超能力,可以把传入的所有参数都放到一个元组里
... print(args,type(args))
...
>>> chao(1,2,3,4)
(1, 2, 3, 4) <class 'tuple'>
>>> chao(['a','e',45])
(['a', 'e', 45],) <class 'tuple'> >>> chao(*['a','e',45]) #如果传入参数时在前面加“*”,它会将每个元素分别传入,当作元组的一个元素。不加“*”的时候会把整体当作元组的一个元素
('a', 'e', 45) <class 'tuple'>
2.**kwargs
>>> def chao2(**kwargs):
... print(kwargs,type(kwargs))
...
>>> chao2(name='xiaoyao') # 将参数当作字典传入,所以必须用指定参数的方式
{'name': 'xiaoyao'} <class 'dict'> >>> dic={'name':'xiaoyao','age':20}
>>> chao2(key1=dic)
{'key1': {'name': 'xiaoyao', 'age': 20}} <class 'dict'>
>>> chao2(**dic) #如果传入参数时在前面加“**”,它会将每个元素分别传入,当作字典的一个键值对。不加“**”的时候会把整体当作字典的一个键值对
{'name': 'xiaoyao', 'age': 20} <class 'dict'>
3.*args,**kwargs(万能参数)
>>> def f1(*args,**kwargs): # *args,**kwargs 顺序不能变
... print(args)
... print(kwargs)
...
>>> f1(11,22,555,name='xiaoyao',age=20)
(11, 22, 555)
{'name': 'xiaoyao', 'age': 20}
>>> f1(11,22,555,5)
(11, 22, 555, 5)
{}
>>> f1(name='xiaoyao',age=20)
()
{'name': 'xiaoyao', 'age': 20}
循序渐进Python3(三) -- 0 -- 初识函数的更多相关文章
- python自动化开发-[第三天]-编码,函数,文件操作
今日概要 - 编码详解 - 文件操作 - 初识函数 一.字符编码 1.代码执行过程 代码-->解释器翻译-->机器码-->执行 2.ASCII ASCII:一个Bytes代表一个字符 ...
- python之路——初识函数
阅读目录 为什么要用函数 函数的定义与调用 函数的返回值 函数的参数 本章小结 返回顶部 为什么要用函数 现在python届发生了一个大事件,len方法突然不能直接用了... 然后现在有一个需求,让你 ...
- Python3 matplotlib的绘图函数subplot()简介
Python3 matplotlib的绘图函数subplot()简介 一.简介 matplotlib下, 一个 Figure 对象可以包含多个子图(Axes), 可以使用 subplot() 快速绘制 ...
- Python3 urllib.parse 常用函数示例
Python3 urllib.parse 常用函数示例 http://blog.51cto.com/walkerqt/1766670 1.获取url参数. >>> from url ...
- 孤荷凌寒自学python第三十八天初识python的线程控制
孤荷凌寒自学python第三十八天初识python的线程控制 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.线程 在操作系统中存在着很多的可执行的应用程序,每个应用程序启动后,就可以看 ...
- python3.7 内置函数整理
#!/usr/bin/env python __author__ = "lrtao2010" #python3.7 内置函数整理 #abs(x) #返回数字的绝对值. 参数可以是整 ...
- python3.7内置函数整理笔记
#python3.7 内置函数整理 #abs(x) #返回数字的绝对值. 参数可以是整数或浮点数. 如果参数是复数,则返回其大小 # print(abs(1)) # print(abs(-1)) # ...
- Python_初识函数
为什么要用函数 现在python届发生了一个大事件,len方法突然不能直接用了... 然后现在有一个需求,让你计算'hello world'的长度,你怎么计算? 这个需求对于现在的你其实不难,我们一起 ...
- Python3中的字符串函数学习总结
这篇文章主要介绍了Python3中的字符串函数学习总结,本文讲解了格式化类方法.查找 & 替换类方法.拆分 & 组合类方法等内容,需要的朋友可以参考下. Sequence Types ...
随机推荐
- mesos INSTALL
$ git clone https://github.com/mesosphere/playa-mesos $ cd playa-mesos $ vagrant up --provision
- Windows Service 开发,安装与调试
Visual Studio.net 2010 Windows Service 开发,安装与调试 本示例完成一个每隔一分钟向C:\log.txt文件写入一条记录为例,讲述一个Windows Servic ...
- 使用Visual Studio Code搭建TypeScript开发环境
使用Visual Studio Code搭建TypeScript开发环境 1.TypeScript是干什么的 ? TypeScript是由微软Anders Hejlsberg(安德斯·海尔斯伯格,也是 ...
- [转]解决vista和win7在windows服务中交互桌面权限问题:穿透Session 0 隔离
服务(Service)对于大家来说一定不会陌生,它是Windows 操作系统重要的组成部分.我们可以把服务想像成一种特殊的应用程序,它随系统的“开启-关闭”而“开始-停止”其工作内容,在这期间无需任何 ...
- SQL Server 2012 创建操作员
数据库可以通知操作员,给操作员发送邮件,就要在SQL Server 的代理中启用数据库邮件,前提是先配置出数据库邮件 右键SQL Server代理,选择属性,按下图设置 保存后,右键操作员,选择新建操 ...
- sql 数据量高并发的数据库优化(转)
Mysql 大数据量高并发的数据库优化 一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实 ...
- Json操作(DynamicJson)
Json的简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了 ...
- Embed dll Files Within an exe (C# WinForms)—Winform 集成零散dll进exe的方法
A while back I was working on a small C# WinForms application in Visual Studio 2008. For the sake of ...
- tiny学习3
这几天在埋头写自己的个星期!而且由于它是基于事件发生的次序(小时就把我的文件导出来了--呵呵.在阅读本文之前,请先看看我Blog里转贴的<TinyXML学习笔记>,相信它能给各位一个关于T ...
- c# 支付宝查单补单
谁谁谁手机那边支付宝支付成功扣钱了,游戏里面却没有充钱,唯有写个补单程序. 首先要查单,查单接口(交易信息查询接口:https://mapi.alipay.com/gateway.do),服务名称:s ...