博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 函数之函数定义、调用、传参
阅读量:4042 次
发布时间:2019-05-24

本文共 1578 字,大约阅读时间需要 5 分钟。

函数是组织好的,可以被重复使用的,用来实现单一或相关功能的代码块。

任何编程语言都提供了很多内嵌函数,同时还允许用户自己定义想要的函数。本节主要讲自定义函数。

1、定义函数的规则

我们自定义函数时,需要满足一些规则,否则编译器不会识别。

(1)函数代码块以def关键词开头,后接函数标识符名和圆括号()。
(2)任何传入实参和形参必须放在圆括号中。圆括号中写的是形参。
(3)函数的第一行语句可以选择性地使用文档字符串—-用于存放函数说明。
(4)函数内容以冒号起始,并且函数体要有缩进。
(5)return[expression]结束函数,选择性地返回一个值给调用者。不带表达式的return相当于返回None。

2、定义函数语法

语法:

def functionname( parameters ) :   "函数文档字符串(即函数说明)"   function_suite(函数体)   return [expression]

默认情况下,参数值和参数名称是按函数声明中定义的顺序匹配起来的。

3、函数调用

函数被定义后,本身是不会自动执行的,只有在被调用后,才会被执行。

下面通过一个例子来讲解函数的调用。

def printStr(str1) :  "打印任何传入的字符串"  print str1

调用上面的打印字符串函数

原函数在定义时,定义了一个形参str1,所以在调用函数时,也必须传入一个参数,否则会报错。

printStr("调用字符串打印函数")

执行结果:

调用字符串打印函数

4、传参

先来看两个例子。

实例1:传递变量

#!/usr/bin/python#coding=utf-8def changeNum(num) :  num += 1  print "自定义函数中的num = ",num#定义变量num,赋初始值为10num = 10#changeNum(num)print "函数调用后num = ",num

执行结果:

自定义函数中的num =  11函数调用后num =  10

实例2 :传序列list

#!/usr/bin/python# -*- coding: utf-8 -*-def changeList(list1) :  list1.append('newStr')  print "函数中的list :",list1#定义变量num,赋初始值为10list1 = [1,2,3]print "调用函数前的list: ",list1changeList(list1)print "调用函数后的list:",list1

执行结果:

调用函数前的list:  [1, 2, 3]函数中的list : [1, 2, 3, 'newStr']调用函数后的list: [1, 2, 3, 'newStr']

从上面的结果可以看出,在函数中改变num变量的值,但是在函数调用之外num变量的值却没有改变。而在第二个实例中,在函数中像list1中增加一个元素’newStr’,在函数外查看原list1,发现也增加了一个元素’newStr’。也就是说在函数中改变list1,原list1也跟着改变。但是从这样我们就能说在Python中,实例1是传值,实例2是传引用吗?

其实非也,和其他语言不一样,在Python中,一切皆对象, Python参数传递采用的都是“传对象引用”的方式。实际上,这种方式相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值,相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象,相当于通过“传值’来传递对象,此时如果想改变这些变量的值,可以将这些变量申明为全局变量。

转载地址:http://xdmdi.baihongyu.com/

你可能感兴趣的文章
常用SQL说明
查看>>
在iOS中使用重定向,把控制台内容…
查看>>
SQLibs iOS开发常用代码库
查看>>
iOS 开发常用尺寸
查看>>
"/usr/include/sqlite3.h" …
查看>>
ShareKit 中SHK.m中的编译错…
查看>>
Object_c底层细节
查看>>
TortoiseSVN切换登录用户
查看>>
iOS 拨打电话相关知识总结
查看>>
iOS 播放流媒体 服务端配置备份
查看>>
一行代码,在 iPhone 应用中…
查看>>
用UIWebView,JS获取视频链接
查看>>
iPhone app 内嵌httpserver
查看>>
iOS 剪贴板使用相关总结《转》
查看>>
让用户在应用中进入 App&nbsp…
查看>>
iOS网页专用,打开iSecret App
查看>>
排列组合公式/排列组合计算公式
查看>>
FaceBook 代码中重要备份&nbs…
查看>>
图片处理之 截取图片
查看>>
MPMoviePlayerController使用,以…
查看>>