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

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

比如我们定义一个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. (一)Java工程化--Maven基础

    Maven 读作['mevən] 翻译成中文是"内行,专家" Maven是什么 包依赖的前世今生: 原始的jar包引用--> ant --> maven. 是一种项目管 ...

  2. pythonのdjango CSRF简单使用

    一.简介 django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成.而对于django中设置防跨站请求伪造功 ...

  3. MongoDB学习笔记(转)

    MongoDB学习笔记(一) MongoDB介绍及安装MongoDB学习笔记(二) 通过samus驱动实现基本数据操作MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB ...

  4. TCP-IP详解笔记3

    TCP-IP详解笔记3 地址解析协议 IP协议的设计目标是为跨越不同类型物理网络的分组交换提供互操作. 网络层软件使用的地址和底层网络硬件使用的地址之间进行转换. 对于TCP/IP网络,地址解析协议( ...

  5. tengine2.2.3报错502的The proxy server received an invalid response from an upstream server问题处理

    tengine2.2.3报错502的The proxy server received an invalid response from an upstream server问题处理 现象:访问订单的 ...

  6. 入坑C++之vs 新建C++项目

    首先呢,下载一个visual  studio 2017的编辑器工具,可能有最新的2019年的版本,根据自己喜欢选择哪个版本就好了 visual studio IDE下载地址:https://visua ...

  7. SpringBoot整合mybatis多数据源,支持分布式事务

    编码工具:IDEA SpringBoot版本:2.0.1 JDK版本:1.8 1.使用IDEA构建一个Maven工程 ,添加依赖: <?xml version="1.0" e ...

  8. Gradle sync failed: SSL peer shut down incorrectly

    http://www.th7.cn/Program/Android/201604/817127.shtml 问题是在更新版本后出现的,被墙隔断的原因 引自大神解决方案 这个问题通常出现在Android ...

  9. 饮冰三年-人工智能-Python-21 Python数据库MySql

    一:下载与安装 1:下载地址:https://dev.mysql.com/downloads/mysql/ 2:安装MySql 打开下载文件解压到指定文件目录.(我这里解压目录为D:\MySql\my ...

  10. SonarLint 代码质量管理

    Below are the instructions of how to install and use SonarLint. Install SonarLint Extensions in VS20 ...