在位置参数一节介绍过星号前面的参数可以是位置参数和关键字参数 。星号后面的参数都是强制关键字参数,必须以指定参数名的方式传参,如果强制关键字参数没有设置默认参数,调用函数时必须传参 。
执行结果:
也可以在可变参数后面命名关键字参数,这样就不需要星号分隔符了:
执行结果:
在Python对象及内存管理机制中介绍了python中的参数传递属于对象的引用传递(pass by object reference),在编写函数的时候需要特别注意 。
先来看个例子:
执行结果:
l1 和 l2指向相同的地址,由于列表可变,l1改变时,l2也跟着变了 。
接着看下面的例子:
结果:
l1没有变化!为什么不是[1, 2, 3, 4]呢?
l = l + [4]表示创建一个“末尾加入元素 4“的新列表,并让 l 指向这个新的对象,l1没有进行任何操作,因此 l1 的值不变 。如果要改变l1的值,需要加一个返回值:
结果:
下面的代码执行结果又是什么呢?
执行结果:
和第一个例子一样 , l1 和 l2指向相同的地址,所以会一起改变 。这个问题怎么解决呢?
可以使用下面的方式:
也可以使用浅拷贝或者深度拷贝,具体使用方法可参考Python对象及内存管理机制 。这个问题在Python编程时需要特别注意 。
本文主要介绍了python函数的几种参数类型:必选参数、可选参数、可变参数、位置参数、强制位置参数、关键字参数、强制关键字参数,注意他们不是完全独立的,比如必选参数、可选参数也可以是关键字参数,位置参数可以是必选参数或者可选参数 。
另外,python中的参数传递属于对象的引用传递,在对可变数据类型进行参数传递时需要特别注意,如有必要 , 使用python的拷贝方法 。
参考文档:
--THE END--
Python的函数都有哪些?Python 函数
函数是组织好的python指定类型函数,可重复使用的python指定类型函数,用来实现单一python指定类型函数,或相关联功能的代码段 。
函数能提高应用的模块性python指定类型函数,和代码的重复利用率 。你已经知道Python提供了许多内建函数,比如print() 。但你也可以自己创建函数,这被叫做用户自定义函数 。
定义一个函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号() 。
任何传入参数和自变量必须放在圆括号中间 。圆括号之间可以用于定义参数 。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明 。
函数内容以冒号起始,并且缩进 。
return [表达式] 结束函数,选择性地返回一个值给调用方 。不带表达式的return相当于返回 None 。
语法
def functionname( parameters ):"函数_文档字符串"
function_suite
return [expression]
默认情况下,参数值和参数名称是按函数声明中定义的顺序匹配起来的 。
实例
以下为一个简单的Python函数,它将一个字符串作为传入参数,再打印到标准显示设备上 。
实例(Python 2.0+)
def printme( str ):"打印传入的字符串到标准显示设备上"
print str
return
函数调用
定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构 。
这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从Python提示符执行 。
如下实例调用了printme()函数:
实例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 定义函数def printme( str ):"打印任何传入的字符串"
推荐阅读
- python怎么接收数据,python serial接收读取数据
- Linux红帽重启命令,linux红帽关机命令
- 网站开发区,开发网站是什么工作
- 笔记本为啥打不开微信直播,微信电脑版无法打开直播
- 函数运行不了Python python函数运行没有结果
- amd公办显卡怎么售后,amd显卡官方渠道
- 电脑怎么录制屏幕表格,在电脑上录制屏幕
- 电脑怎么配大型游戏显卡,玩大型游戏显卡怎么设置
- linux加权限执行命令 linux加s权限