函数其实一段带名字的代码段,我们可以根据代码段,重复执行某一段代码段,或者有条件的执行某一段代码段。

将一段代码定义成函数后,我们可以很方便的根据自己的需求,随时调用该代码段。遇到需求变化的时候,只需要修改该函数,就可以满足需求,不需要到处修改特定的代码。

比如我们定义一个print hello的函数:

def say_hello():
print("Hello!") say_hello()
'''
Hello!
'''

我们可以看到,我们使用def来定义函数, 以冒号结尾。 输入回车后,ide会自动缩进,缩进后的代码就是函数的定义体。定义完函数体后,我们通常空一行表示定义完函数。

我们直接输入函数名,即可调用函数。

我们还可以向函数传递“消息”,在编程语言中我们称之为参数。比如我们修改函数,可以向其传递一个人名,并输出想要语句。

def say_hello(name):
print(name + ", Hello!") say_hello('Ralf')
'''
Ralf, Hello!
'''

通过上面代码,我们可以看到,我们重新修改了函数,增加了一个参数 name, 修改了函数体。这样我们可以根据自己的需要,向函数传递消息,并输出想要的结果。

函数定义中的参数,我们通常称之为 形参,比如上述例子中的变量name, 这个变量只在函数定义中使用,并不具有实际的值。我们在调用函数时,传递的消息或者说变量,我们称之为实参,是我们“实际“上想要使用的参数或者数值,变量。

通常情况下,我们必须按照事先定义好的参数,依次传递给函数体,才能正确得出想要的结果。

def say_hello(name, city):
print(name + ", Welcome to " + city + "!" ) say_hello('Ralf', "Shanghai")
'''
Ralf, Welcome to Shanghai!
'''
def say_hello(name, city):
print(name + ", Welcome to " + city + "!" ) say_hello('Shanghai', "Ralf")
'''
Shanghai, Welcome to Ralf!
'''
def say_hello(name, city):
print(name + ", Welcome to " + city + "!" ) say_hello('Ralf')
'''
Traceback (most recent call last):
File "D:/PythonStudy/test.py", line 31, in <module>
say_hello('Ralf')
TypeError: say_hello() missing 1 required positional argument: 'city'
'''

我们可以使用关键字的形式来规避上面例子中出现的错误,即在调用函数时,使用 形参 = value的方式来调用函数:

def say_hello(name, city):
print(name + ", Welcome to " + city + "!" ) say_hello(city = "Shanghai", name = 'Ralf')
'''
输出:
Ralf, Welcome to Shanghai!
'''

在定义函数时,我们也可以定义一些参数默认值,这样在调用,如果给了实参,函数就使用实参,没有给值,就是用默认值。

def say_hello(name, city = "Shanghai"):
print(name + ", Welcome to " + city + "!" ) # 使用默认值
say_hello("Ralf") #使用实际值
say_hello("Rachel", "Beijing")
'''
输出:
Ralf, Welcome to Shanghai!
Rachel, Welcome to Beijing!
'''

返回值:

函数不仅可以接受外部传送的变量参数,也可以输出一个返回值给调用者。

def say_hello(name, city = "Shanghai"):
return name + ", Welcome to " + city + "!" out_message = say_hello("Rachel", "Beijing")
print(out_message) '''
输出:
Rachel, Welcome to Beijing!
'''

返回一个列表:

def born_city(name, city = "Shanghai"):
return [name, city] out_message = born_city("Rachel", "Beijing")
print(type(out_message))
print(out_message) '''
输出:
<class 'list'>
['Rachel', 'Beijing']
'''

返回一个字典:

def born_city(name, city = "Shanghai"):
return {'name': name, 'city': city} out_message = born_city("Rachel", "Beijing")
print(type(out_message))
print(out_message) '''
输出:
<class 'dict'>
{'name': 'Rachel', 'city': 'Beijing'}
'''

传递任意数量的实参,有时候我们不确定,实际参数有几个,可以能是一个也可能是多个,要怎么定义哪。我们可以在形参前面加一个星号,表示这个参数可以是多个:

def say_hello(*names):
print(names) out_message = say_hello("Rachel", "Ralf", "Terry")
print(out_message) '''
输出:
('Rachel', 'Ralf', 'Terry')
'''

注意函数返回了一个元组,即便函数只输入一个参数,返回的也是一个元组。

结合实参和任意数量的实参:

def say_hello(words, *names):
for name in names:
print(words + ", " + name) out_message = say_hello("hello", "Rachel", "Ralf", "Terry")
print(out_message) '''
输出:
hello, Rachel
hello, Ralf
hello, Terry
'''

使用任意数量的关键字实参。有时候我们需要接受任意数量的实参,但是不知传递给函数的会是什么样的信息。在这种情况下,我们可以将函数编写成接受任意数量的 键值对,即字典的形式。方式为加两个冒号 **dict:

def pepole_info(name, sex, **others):
print(name + ": "+ sex )
for key, value in others.items():
print(key + ": " + value) out_message = pepole_info("Ralf", "male", height = "", hobby = "football")
print(out_message) '''
输出:
Ralf: male
height: 175
hobby: football
'''

Python 学习笔记10 函数的更多相关文章

  1. Python学习笔记之函数

    这篇文章介绍有关 Python 函数中一些常被大家忽略的知识点,帮助大家更全面的掌握 Python 中函数的使用技巧 1.函数文档 给函数添加注释,可以在 def 语句后面添加独立字符串,这样的注释被 ...

  2. 小甲鱼:Python学习笔记003_函数

    >>> # 函数>>> def myFirstFunction(params1,params2...): print("这是我的第一个函数!") ...

  3. Python学习笔记 - day6 - 函数

    函数 函数在编程语言中就是完成特定功能的一个词句组(代码块),这组语句可以作为一个单位使用,并且给它取一个名字.可以通过函数名在程序的不同地方多次执行(这叫函数的调用).函数在编程语言中有基本分为:预 ...

  4. python学习笔记10(函数一): 函数使用、调用、返回值

    一.函数的定义 在某些编程语言当中,函数声明和函数定义是区分开的(在这些编程语言当中函数声明和函数定义可以出现在不同的文件中,比如C语言),但是在Python中,函数声明和函数定义是视为一体的.在Py ...

  5. python 学习笔记 10 -- 正則表達式

    零.引言 在<Dive into Python>(深入python)中,第七章介绍正則表達式,开篇非常好的引出了正則表達式,以下借用一下:我们都知道python中字符串也有比較简单的方法, ...

  6. Python学习笔记系列——函数

    今年下半年的计划主要是Python和Mysql了,公司不方便看书和视频,就照着廖雪峰的Python网站开始看了.以下纯为个人笔记记录,若是想系统学习的小伙伴还是看这里的好一些,毕竟系统.https:/ ...

  7. Python学习笔记(五)函数和代码复用

    函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Python提供了许多内建函数,比如print().同样,你也可以自己创建函数, ...

  8. python学习笔记(4)--函数

    1.函数 函数是指将一组语句的集合通过一个名字封装起来.要想执行这个函数,只需调用其函数名即可. 函数的特性: 1.减少重复代码 2.使程序变的课扩展 3.使程序变得易维护 语法定义: def pri ...

  9. python学习笔记10(Python的内存管理)

      用这张图激励一下自己,身边也就只有一位全栈数据工程师!!! 32. Python的内存管理 1. 对象的内存使用 对于整型和短字符串对象,一般内存中只有一个存储,多次引用.其他的长字符串和其他对象 ...

随机推荐

  1. JS遍历数组的操作(map、forEach、filter等)

    1.map的用法 定义:原数组被“映射”成对应新数组 代码示例: var users = [ {name: "张含韵", "email": "zhan ...

  2. hadoop与hbase对应的支持版本

    官网信息:http://hbase.apache.org/book.html#java JDK的对应关系: 用jdk1.8+hadoop2.7.4/hadoop2.7.6+zookeeper3.4.1 ...

  3. css之字体的引用

    font-family 属性设置文本的字体系列. font-family 属性应该设置几个字体名称作为一种"后备"机制,如果浏览器不支持第一种字体,他将尝试下一种字体. 注意: 如 ...

  4. 帆软报表(finereport)图表——扇形图/等弧度的玫瑰图

    扇形图/等弧度的玫瑰图,展示的是展示数据所占的比例,需要所有数据的和加起来为1. 下面利用一个实例说明玫瑰图的用法和设置起始角度和终止角度,操作如下: 1.配置一个内置数据集 新增一个等弧度的玫瑰图模 ...

  5. WX支付功能的调用

    1.引入js. 2.微信支付的js.此处有的理解不知对不对,是照着老大的例子整改的~ $('.button').click(function () { var giftId = $('.show'). ...

  6. 随机获取min和max之间的一个整数

    // 随机获取min和max之间的一个整数 const randomNum = (Min, Max) => { let Range = Max - Min; let Rand = Math.ra ...

  7. form表单获取多选的值

    flask 中 form 表单直接获取多选框的值时 language = request.values.getlist('values')或 language=request.from.getlist ...

  8. 饮冰三年-人工智能-Python-18Python面向对象

    1 类与实例对方法和属性的修改 class Chinese: # 这是一个Chinese的类 #定义一个类属性,又称为静态数据或者静态变量,相当于C#中的static country="Ch ...

  9. sonar-代码扫描

    代码测试sonar 1.下载地址: https://www.sonarqube.org/downloads/ 2.配置jdk环境(版本要求1.8+) [root@localhost#>> ...

  10. 使用 NPOI 导出 Excel 文件

    [NPOI简介] NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. 使用 NPOI 你就可以在没有安装 Office 或者 ...