python calu_Python学习笔记4:函数
1.函数
函数就是一段具有特点功能的、可重用的语句组。
在Python中函数是以关键词 def 开头,空格之后连接函数名和圆括号(),最后一个冒号:结尾。
函数名只能包含字符串、下划线和数字且不能以数字开头。虽然函数名可以随便起,但我们给函数起名字还是要尽量简短,并表达函数功能。
每一个函数都应该对功能和参数进行相应的说明,应该写在函数下面第一行。以增强代码的可读性。
def strlen(s):
“”“ calulate the length of the string ”“”
len = 0
for x in s:
len = len + 1
return len
空函数
def null_fun():
"""This is a null fun"""
pass #pass语句什么都不做,实际上用来作为占位符
不写return与写入return None的效果相同,返回的只都是None
只写一个return后面不加任何东西的时候与写return None的效果一样
如果在函数中有多个return,只执行第一个return。
多返回值函数
def mult_return():
name='Lily'
age=18
return name, age
c= mult_return()
print(c)
# ('Lily', 18)
n, a = mult_return()
print(n, a)
# Lily 18
当用一个变量接收返回值的时候,收到的是一个元组。这是因为在python中把用逗号分割的 多个值认为是一个元组。
当返回值有多个变量接收,那么返回值的个数应该和接收变量的个数完全一致。
函数调用
s='hello world!'
length=strlen(s) #调用上面写的strlen函数
print(length) #打印输出12
函数参数
函数的参数安装类型可以分为形参和实参(可变类型和不可变类型)。
不可变类型(如 整数、字符串、元组)传递的只是它的值,没有影响对象本身。如果在函数内部修改它的值,则是相当于新生成一个它。
可变类型则类似C++的引用传递,如列表,字典。则是将参数真正的传过去,修改后外部的参数变量也会受影响。
def invariableFun(i):
i=100 #参数为不可变类型,函数内部改变不会影响外部参数
a=1
print(a)
invariableFun(a)
print(a)
#输出结果如下
1
1
def variantFun(list):
list.append('python') #参数为可变类型,函数内部改变会影响外部参数
mylist=['Lily', 'James']
print(mylist)
variantFun(mylist)
print(mylist)
#输出结果如下
['Lily', 'James']
['Lily', 'James', 'python']
参数还可以分为必需参数,关键字参数, 默认参数和不定长参数。
1)必需参数
必要参数,即函数调用时必须要传的参数。
2)默认参数
必选参数在前,默认参数在后,否则python解释器会报错。
默认参数一定要指向不变对象!指向不变对象!指向不变对象!
def student(name, age=18):
print(name, age)
student("Lily")
student("Lily", 20)
#输出结果如下:
Lily 18
Lily 20
3)关键字参数
其实默认参数中已经出现了关键字参数!关键字参数就是在调用函数时,传入实参时带参数名,用这样的方式传入的实参叫做关键字参数。
使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
def student(name, age=18):
print(name, age)
student(age=22, name='Lily')
#输出结果如下:
Lily 22
4)不定长参数
不定长参数又分为两种:
a.允许在调用时传入多个“非关键字”参数,python会将这些多出来的参数放入一个元组中。
def tupleVarArgs(arg1, arg2='default arg2', *other):
print('arg1: ', arg1)
print('arg2: ', arg2)
for x in other:
print('other arg: ', x)
#调用输出结果如下:
tupleVarArgs('Lily')
arg1: Lily
arg2: default arg2
tupleVarArgs('Lily', 'Sandy')
arg1: Lily
arg2: Sandy
tupleVarArgs('Lily', 'Sandy', 'James', 'Curry')
arg1: Lily
arg2: Sandy
other arg: James
other arg: Curry
b.允许在调用时传入多个“关键字”参数,python会将这些多出来的放入一个字典中。需要注意的是,关键字变量参数应该为函数定义的最后一个参数,带**。
def dictVarArgs(arg1, arg2='default arg2', **otherArgs):
print('arg1: ', arg1)
print('arg2: ', arg2)
for x in otherArgs.keys():
print('other arg: '% (x, str(otherArgs[x])))
#调用输出结果如下:
dictVarArgs('Lily')
arg1: Lily
arg2: default arg2
dictVarArgs('Lily', 'Sandy')
arg1: Lily
arg2: Sandy
dictVarArgs('Lily', 'Sandy', name1='James', name2='Curry')
arg1: Lily
arg2: Sandy
other arg:
other arg:
python calu_Python学习笔记4:函数相关推荐
- python编程学习笔记⑦-1函数
函数是带名字的代码块 8.1定义函数 使用关键字def 告诉python你要定义一个函数. def greet_user():#()是必要的print("Hello!") gree ...
- 简明Python教程学习笔记_2_函数
函数 为什么要有函数?因为在平时写代码时,如果没有函数的话,那么将会出现很多重复的代码,这样代码重用率就比较低...并且这样的代码维护起来也是很有难度的,为了解决这些问题,就出现了函数,用来将一些经常 ...
- 简明 Python 教程学习笔记_2_函数
1. Python 内建函数 Python 内建函数:https://docs.python.org/zh-cn/3.9/library/functions.html#classmethod Pyth ...
- 初学Python的学习笔记7----偏函数、模块、重点是面向对象
2019独角兽企业重金招聘Python工程师标准>>> 装饰器 #在代码运行期间动态增加功能的方式,称之为"装饰器"(Decorator). #本质上,decor ...
- Python基础学习笔记-6.函数
6.函数 6.1.函数的基本语法 6.1.1.为什么要用函数 1.提高代码复用性--抽象出来,封装为函数 2.将复杂的大问题分解成一系列小问题,分而治之--模块化设计的思想 3.利于代码的维护和管理 ...
- python函数是一段具有特定功能的语句组_Python学习笔记(五)函数和代码复用
本文将为您描述Python学习笔记(五)函数和代码复用,具体完成步骤: 函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Pyth ...
- Python学习笔记:函数(Function)
Python学习笔记:函数(Function) 一.函数基本概念 函数是Python里组织与重用代码最重要的方法.一般来说,如果你期望多次重复相同或相似的代码,写一个可重用的函数可能是值得的.函数通过 ...
- Python学习笔记12_函数
Python学习笔记12_函数 文章目录 Python学习笔记12_函数 1.函数定义 2.函数调用 3.函数的参数 3.1.可更改对象和不可更改对象参数 3.2.必需参数(位置参数) 3.3.关键字 ...
- python做直方图-python OpenCV学习笔记实现二维直方图
本文介绍了python OpenCV学习笔记实现二维直方图,分享给大家,具体如下: 官方文档 – https://docs.opencv.org/3.4.0/dd/d0d/tutorial_py_2d ...
最新文章
- mySql 的常用命令
- mysql root 提权_mysql以ROOT权限提权方法
- .Net架构篇:实用中小型公司支付中心设计
- python数据类型描述_【文山玩Python】用python的数据类型,来简单的描述世界
- 单片机串行通信全解析
- linux 空硬盘,linux – dd在整个磁盘上,但不想要空的部分
- Scipy教程 - 统计函数库scipy.stats
- qW3xt.2服务器病毒
- Windows自动关机命令脚本
- 巴特沃斯(Butterworth)滤波器的设计和幅频特性曲线绘制
- iOS人脸识别Demo
- 设置WDS桥接成功,上不了网怎么办?路由器WDS无线桥接设置正确方法
- h3c交换机端口加入vlan命令_7.2.2 H3C交换机VLAN接口基本属性配置
- 重磅 | 逆天操作,修图神器Photoshop,真的可以,完美移植到手机上了
- 一级注册消防工程师招生简章
- 鲁宾逊非标准微积分与国内高等数学“秀肌肉”
- 这6部韩国电影你都看过吗?
- Python爬虫-专业数据库书名爬取
- 如何删除ActiveX控件
- 使用IDEA整合SpringMVC和Mybatis(SSM框架)(二)