python --函数

转http://www.cnblogs.com/vamei/archive/2012/06/01/2529500.html

函数最重要的目的是方便我们重复使用相同的一段程序。

将一些操作隶属于一个函数,以后你想实现相同的操作的时候,只用调用函数名就可以,而不需要重复敲所有的语句。

 

函数的定义

首先,我们要定义一个函数, 以说明这个函数的功能。

def square_sum(a,b):c = a**2 + b**2return c

这个函数的功能是求两个数的平方和。

首先,def,这个关键字通知python:我在定义一个函数。square_sum是函数名。

括号中的a, b是函数的参数,是对函数的输入。参数可以有多个,也可以完全没有(但括号要保留)。

我们已经在循环和选择中见过冒号和缩进来表示的隶属关系。

c = a**2 + b**2        # 这一句是函数内部进行的运算

return c               # 返回c的值,也就是输出的功能。Python的函数允许不返回值,也就是不用return。

return可以返回多个值,以逗号分隔。相当于返回一个tuple(定值表)。

return a,b,c          # 相当于 return (a,b,c)

 

在Python中,当程序执行到return的时候,程序将停止执行函数内余下的语句。return并不是必须的,当没有return, 或者return后面没有返回值时,函数将自动返回None。None是Python中的一个特别的数据类型,用来表示什么都没有,相当于C中的NULL。None多用于关键字参数传递的默认值。

 

函数调用和参数传递

定义过函数后,就可以在后面程序中使用这一函数

print square_sum(3,4)

Python通过位置,知道3对应的是函数定义中的第一个参数a, 4对应第二个参数b,然后把参数传递给函数square_sum。

(Python有丰富的参数传递方式,还有关键字传递、表传递、字典传递等,基础教程将只涉及位置传递)

函数经过运算,返回值25, 这个25被print打印出来。

 

我们再看下面两个例子

复制代码
a = 1def change_integer(a):a = a + 1return aprint change_integer(a)
print a#===(Python中 "#" 后面跟的内容是注释,不执行 )b = [1,2,3]def change_list(b):b[0] = b[0] + 1return bprint change_list(b)
print b
复制代码

第一个例子,我们将一个整数变量传递给函数,函数对它进行操作,但原整数变量a不发生变化。

第二个例子,我们将一个表传递给函数,函数进行操作,原来的表b发生变化。

对于基本数据类型的变量,变量传递给函数后,函数会在内存中复制一个新的变量,从而不影响原来的变量。(我们称此为值传递)

但是对于表来说,表传递给函数的是一个指针,指针指向序列在内存中的位置,在函数中对表的操作将在原有内存中进行,从而影响原有变量。 (我们称此为指针传递)

 

总结

def function_name(a,b,c):statementreturn something  # return不是必须的

函数的目的: 提高程序的重复可用性。

return     None

通过位置,传递参数。

基本数据类型的参数:值传递

表作为参数:指针传递

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/262393.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql slave 线程 简书_【MySQL】你真的读懂了slave status吗?

前言:大家平时在检查主从复制的时候基本上都会使用 show slave status来看主从复制的情况,那么你真的读懂每个指标项了吗?一、status指标解读rootlocalhost [(none)]>show slave status\GERROR 2006 (HY000): MySQL server has gone awayNo connectio…

Python中用input()和print()体现输入输出重定向

众所周知,在Python中, 语句:变量input() 的功能是:从键盘读取数据到内存变量,此过程为输入。此时,键盘为标准输入设备,对应的文件对象名为sys.stdin。 语句:input(变量) 的功能是&…

【DI专题】在 DI 脚本文件中调用存储过程

以前用过,但是隔很久不用,还是会有点忘记,还是记下来吧:) 1.在左侧datastore区域,选择数据库,选择 Function,单击右键,选择 import by name; 2.在弹出对话框中,输入待导入…

国外网站设计欣赏:30个优秀的国外咖啡网站设计

梦想天空博客向大家分享各种类型的优秀网站作品,有电子商务网站设计、旅游网站设计、餐馆网站设计、设计工作室网站设计、大学网站设计以及各种色系,各种风格的网站设计作品。今天这篇文章给大家带来30个优秀的国外咖啡网站设计作品,一起欣赏…

mysql查询连续3个月以上_MySQL查询显示连续的结果

#mysql中 对于查询结果只显示n条连续行的问题#在领扣上碰到的一个题目:求满足条件的连续3行结果的显示x city built a new stadium, each day many people visit it and the stats are saved as these columns: id, date, people;please write a query to display t…

对已有文件进行既读又写的操作时关于文件位置注意事项(适用于Python和C/C++)

当我们需要对现有文件进行读取数据并修改文件中的数据时,就需要用到对已有文件进行既读又写的操作。有多种可读且可写的文件打开方式:r,w,a,rb,wb,ab,具体含义见下表。 打开 方式 读写 特性 文件数据 特性 对文件存在性的处理方式 备注 …

[原]JS ajax类的三种封装形式及简单对比

三种形式:1 function(para1,para2,...)2 function()在里面定义prototype,每次调用前先new一下3 类似于JSON的方式JSON的形式,定义出来的相当于静态类,用for循环,做20次调用, 第一种形式 返回了20个结果。第…

Quaruts II 增量编译

http://bbs.ednchina.com/BLOG_ARTICLE_3007977.HTM http://quartushelp.altera.com/11.1/mergedProjects/msgs/msgs/esgn_tri_state_partition.htm 增量编译主要有两个工具:Design Partition和Logiclock Design Partition只是将设计进行“逻辑分区”,直…

python中变量名存储在哪里_python – 如何在内部存储和映射变量名称?

I think at a high level it can be done with a dict, where the key is the variable name (str?) and the value is the reference that it’s associated with.这也是它内部工作的方式.在CPython中,变量名和它们指向的对象通常存储在Python字典中;编写Python代码时可以使用…

【译】CodeIgniter HMVC模块扩展使用文档

CodeIgniter HMVC扩展说明 原文地址:Modular Extensions - HMVC 模块扩展——HMVC 模块扩展让CodeIgniter框架模块化。模块是一组独立的组件(通常有模型、控制器和视图),它们被分类在应用模块的子文件夹中,并且能够直接…

Python嵌套列表解析式(又称列表推导式)写法剖析与应用举例

#嵌套列表解析式又称嵌套列表推导式,功能非常强大,但是初学者难以摸清其书写规则。 #以下实例展示了嵌套列表解析的写法。 #嵌套列表解析表达是的书写规则是层层嵌套。 #嵌套层的一般形式为:for outter in inner。根据需要解析的嵌套层次深度…

C#中的委托和事件

using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace Study_05_Observer设计模式 {// 计数器public class Counter{int x;int y;//声明委托public delegate void CountEventHandler(object sender, CountEventArgs e);public eve…

python函数参数类型及顺序_python函数参数类型及其顺序

根据inspect模块官文文档中关于函数参数类型的相关说明,python函数参数共有五种类型,按顺序分别为:POSITIONAL_ONLY、POSITIONAL_OR_KEYWORD、VAR_POSITIONAL、KEYWORD_ONLY、VAR_KEYWORD。如图:POSITIONAL_ONLY:参数值…

JS组件系列——Bootstrap Table 表格行拖拽(二:多行拖拽)

原文:JS组件系列——Bootstrap Table 表格行拖拽(二:多行拖拽)前言:前天刚写了篇JS组件系列——Bootstrap Table 表格行拖拽,今天接到新的需要,需要在之前表格行拖拽的基础上能够同时拖拽选中的多行。博主用…

Python利用matplotlib.animation和matplotlib.pyplot和ffmpeg录制动画并保存为MP4文件

因为需要将结果动画保存为MP4视频文件需要ffmepg软件的的支持。 一:安装ffmpeg软件: ffmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方…

Chapter 4 : 单行函数

SELECT LOWER(SQL: Structural Query Language)from dual;//dual 是一个虚表(伪表)。UPPER(列名|表达式)SELECT UPPER(sql is used exclusively in rdbmses)from dual;SELECT INITCAP(sql is an ENGLISH LIKE language)from dual;Output: Sql Is An English Like Languageselec…

黑马训练营自学笔记(03)

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ---------------------- 对ViewState的一些认识 因为Http协议是一总无状态记忆的协议,即服务器不会知道上次可客户端请求的内容。WebForm中许多服务端控件的实现依靠的就是Vie…

scrapy知乎爬虫mysql存储项目_Scrapy爬虫框架第八讲【项目实战篇:知乎用户信息抓取】--本文参考静觅博主所写...

思路分析:(1)选定起始人(即选择关注数和粉丝数较多的人--大V)(2)获取该大V的个人信息(3)获取关注列表用户信息(4)获取粉丝列表用户信息(5)重复(2)(3)(4)步实现全知乎用户爬取实战演练:(1)、创建项目:scrapy startproject zhijutest(2)、创建爬…

pyplot输出的绘图界面中文乱码的解决方案

解决办法很简单,明确设置并使用特定的中文字体即可。具体来说,分两步: 第一步:生成指定的字体属性对象。此对象名在下例中为fp。 import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties #注意路…

kali下生成web端后门

很多时候在***测试时选择web***害怕用的别人的马带有后门,这样自己的辛苦就要被别人不劳而获,很多时候我们都想拥有自己的马,那么这个时候你就应该使用kail来生成一个自己独特密码的web***了。Kali Linux自带有好几个web***生成工具&#xff…