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: <%s : %s> '% (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: <name1 : James>
other arg: <name2 : Curry>
Python学习笔记4:函数的更多相关文章
- Python学习笔记之函数
这篇文章介绍有关 Python 函数中一些常被大家忽略的知识点,帮助大家更全面的掌握 Python 中函数的使用技巧 1.函数文档 给函数添加注释,可以在 def 语句后面添加独立字符串,这样的注释被 ...
- 小甲鱼:Python学习笔记003_函数
>>> # 函数>>> def myFirstFunction(params1,params2...): print("这是我的第一个函数!") ...
- Python学习笔记 - day6 - 函数
函数 函数在编程语言中就是完成特定功能的一个词句组(代码块),这组语句可以作为一个单位使用,并且给它取一个名字.可以通过函数名在程序的不同地方多次执行(这叫函数的调用).函数在编程语言中有基本分为:预 ...
- Python学习笔记系列——函数
今年下半年的计划主要是Python和Mysql了,公司不方便看书和视频,就照着廖雪峰的Python网站开始看了.以下纯为个人笔记记录,若是想系统学习的小伙伴还是看这里的好一些,毕竟系统.https:/ ...
- Python学习笔记(五)函数和代码复用
函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Python提供了许多内建函数,比如print().同样,你也可以自己创建函数, ...
- python学习笔记(4)--函数
1.函数 函数是指将一组语句的集合通过一个名字封装起来.要想执行这个函数,只需调用其函数名即可. 函数的特性: 1.减少重复代码 2.使程序变的课扩展 3.使程序变得易维护 语法定义: def pri ...
- Python学习笔记-Day3-python函数
1.为什么要用函数? 提高代码重复利用率,减少代码冗余.封装模块化代码,便于调用 2.函数声明定义(注意:函数先声明后调用) 注意:函数的reture循环中的exit功能一样(函数不执行,终止) 函数 ...
- Python学习笔记11—函数
建立第一个函数 /usr/bin/env Python #coding:utf-8 def add_function(a,b): c = a+b print c if __name__==" ...
- Python学习笔记7-把函数当参数传递、指定可变参数
把函数当参数传递 # 函数参数传递 # 面向对象编程就是把对象传来传去 # 面向函数编程就是把函数传来传去 def mytest(num): return num * 2 # # 不光可以传递变量,还 ...
- Python学习笔记_week3_函数
一.介绍 1.面向对象(华山派)--->类(独门秘籍)--->class(定义的关键字) 2.面向过程(少林派)--->过程--->def 3.函数式编程(逍遥派)---> ...
随机推荐
- 【C语言编程入门笔记】C语言果然博大精深!函数还分内部和外部?
۞ 外部函数与内部函数 前面我们讲解了关于函数的调用都是针对同一个源文件中其他函数进行调用的,而在有些情况下,函数也可以对另外一个源文件中的函数进行调用.当一个程序由多个源文件组成时,根据函数是否能被 ...
- WebFlux快速上手
一.新建项目 示例使用IDEA快速创建基于SpringBoot的工程. springboot 2.3.1 java 8 WebFlux 必须选用Reactive的库 POM 依赖 <depend ...
- centos8下启用rc-local服务
一,centos8不建议写rc.local,默认启动时执行的命令放到何处? 以前我们会把linux开机执行的命令写入到/etc/rc.local 在centos8上系统不再建议我们写入到rc.loca ...
- linux(fedora30):安装/配置maven(maven3.6.1)
一,maven的用途 1,用途 Maven 是一个项目管理工具,主要用于项目构建,依赖管理,项目信息管理 maven可以用来: 帮用户下载jar包, 有依赖包时自动下载所需的依赖包 打包war包或ja ...
- Spring源码解析之基础应用(三)
组合Java配置 在XML中,我们可以使用<import/>标签,在一个XML文件中引入另一个XML文件,在Java类中,我们同样可以在一个配置类中用@Import引入另一个配置类,被引入 ...
- java开发环境配置,看这一篇就足够了!
可能平时大家对于安装环境的需求不是那么强烈,但是当你换了一台新电脑时,你就会发现怎么也得花费你几个小时乃至半天一天的时间.故此整理此篇文章,给有需要的小伙伴 注:本文皆win10环境 (1).JDK的 ...
- Curl可以模拟浏览器
curl直接访问被拒绝 [22:10:00 root@C7 ~]#curl -I www.163.com HTTP/1.1 403 Forbidden Date: Wed, 24 Jun 2020 0 ...
- Ⅰ Introduction to Reinforcement Learning
Dictum: To spark, often burst in hard stone. -- William Liebknecht 强化学习(Reinforcement Learning)是模仿人 ...
- Python使用psycopg2模块操作PostgreSQL
https://blog.csdn.net/pcent/article/details/78643611
- JavaScript 正则表达式:字符串中查找数字
以下代码是在一段字符串中,用正则表达式找到数字,使用 replace() 方法,用找到的数字的两倍值替换原数字.replace() 方法的第二个参数为一个函数,返回找到数字的两倍值. <scri ...