函数(Python)
函数是什么?
计算机的函数,是一个固定的一个程序段,或称其为一个子程序,它在可以实现固定运算功能的同时,还带有一个入口和一个出口,所谓的入口,就是函数所带的各个参数,我们可以通过这个入口,把函数的参数值代入子程序,供计算机处理;所谓出口,就是指函数的函数值,在计算机求得之后,由此口带回给调用它的程序。
使用函数的特性:减少代码重复,程序可扩展,容易维护。
语法定义:
# @Software: PyCharm
def say():#定义函数
print('hello world') say()#调用函数 say hello world Process finished with exit code 0
# @Software: PyCharm
a,b = 5,2
def calc (x,y):
res = x**y
return res
c = calc(a,b)
print(c) 25 Process finished with exit code 0
函数的参数:
形参:变量只有在被调用的时候才被分配内存单元,调用结束即释放内存单元,也就是只有在函数内部有效。
实参:必须有确定的值,将值传递给形参。
# @Software: PyCharm
a,b = 5,2#a,b 实参
def calc (x,y):#x,y 为形参
res = x**y
return res
c = calc(a,b)#实参传递给形参
print(c) 25 Process finished with exit code 0
位置参数:调用函数时根据函数定义的参数位置来传递参数。
def students(name,age,sex,num):#name age sex num 为位置参数
print('下面是学生信息')
print('名字:',name)
print('年龄:',age)
print('性别',sex)
print('学号:',num) students('jack',22,'boy',150313)
students('siri',5,'girl',180254) 下面是学生信息
名字: jack
年龄: 22
性别 boy
学号: 150313
下面是学生信息
名字: siri
年龄: 5
性别 girl
学号: 180254 Process finished with exit code 0
默认参数:默认参数指的是当函数调用中省略了实参时自动使用的一个值。例如,如果将void wow(int n)设置成n有默认值为1,则函数调用wow()相当于wow(1)。这极大地提高了使用函数的灵活性。
def students(name,age,sex,num,addr=''):#addr为默认参数
print('下面是学生信息')
print('名字:',name)
print('年龄:',age)
print('性别',sex)
print('学号:',num)
print('学会',addr) students('jack',22,'boy',150313)
students('siri',5,'girl',180254) 下面是学生信息
名字: jack
年龄: 22
性别 boy
学号: 150313
地址 0370
下面是学生信息
名字: siri
年龄: 5
性别 girl
学号: 180254
地址 0370 Process finished with exit code 0
非固定参数:在定义时不确定需要传入多少参数。
# @File : jia.py
def students(name,age,*args):#*args 将多余的值放入一个元组中
print(name,age,args) students('jack',22)
students('siri',1,'girl','read') D:\untitled\venv\Scripts\python.exe D:/untitled/bogls/jia.py
jack 22 ()
siri 1 ('girl', 'read') Process finished with exit code 0
# @File : jia.py
def students(name,age,*args,**kwargs):#**kwargs 将多余的值放入字典中
print(name,age,args,kwargs) students('jack',22)
students('siri',1,'girl','read',sex='girl',addr='') jack 22 () {}
siri 1 ('girl', 'read') {'sex': 'girl', 'addr': ''} Process finished with exit code 0
全局与局部变量:
在子程序中定义的变量为局部变量,在程序的一开始定义的变量称为全局变量。全局变量的作用域是整个程序,局部变量的作用域是定义该变量的子程序。当局部变量与全局变量重名时,在定义局部变量的子程序内,局部变量起作用,在其他地方全局变量起作用。
# @File : jia.py
a,b = 5,2
def square(a,b):
print('函数内,定义局部变量前a**b=%s'%(a**b))
a,b = 5,1
print('函数内,定义局部变量后a**b=%s'%(a**b)) square(a,b)
print('函数外,定义局部变量后a**b=%s'%(a**b)) D:\untitled\venv\Scripts\python.exe D:/untitled/bogls/jia.py
函数内,定义局部变量前a**b=25
函数内,定义局部变量后a**b=5
函数外,定义局部变量后a**b=25 Process finished with exit code 0
函数返回值:
要想获取函数的执行结果,可以使用return语句把结果返回。函数在执行过程中遇到return语句,就会停止执行并返回结果,return语句代表着函数的结束
def square(name,a,b):
my_name = name
return my_name
square_ab = a**b
print(square_ab)
a = square('jia',5,2)
print(a) D:\untitled\venv\Scripts\python.exe D:/untitled/bogls/jia.py
jia
D:\untitled\venv\Scripts\python.exe D:/untitled/bogls/jia.py jia Process finished with exit code 0
如果没有指定return,则函数返回值是None
def square(name,a,b):
my_name = name
#return my_name
square_ab = a**b
print(square_ab)
a = square('jia',5,2)
print(a) D:\untitled\venv\Scripts\python.exe D:/untitled/bogls/jia.py
25
None Process finished with exit code 0
递归函数:
在函数内部,可以调用其它函数。如果一个函数在内部调用自身,这个函数就是递归函数。递归的典型案例,二分查找http://www.cnblogs.com/serpent/p/8970561.html(一个简单的二分查找)
递归的特性:有一个明确的结束条件;每进入更深一层递归,问题规模减小。
匿名函数:匿名函数和其他函数一起用非常强大
res = map(lambda x:x**2,[1,2,3,4,5])
for i in res:
print(i) D:\untitled\venv\Scripts\python.exe D:/untitled/bogls/jia.py
1
4
9
16
25 Process finished with exit code 0
函数(Python)的更多相关文章
- 函数:Python的乐高积木 - 零基础入门学习Python017
函数:Python的乐高积木 让编程改变世界 Change the world by program 相信大家小时候应该都玩过神奇的乐高积木,只要通过想象和创意,我们可以用它拼凑出很多神奇的东西. 随 ...
- 匿名函数python内置高阶函数以及递归
匿名函数 python定义一个函数通常使用def关键词,后面跟函数名,然后是注释.代码块等. def func(): '''注释''' print('from func') 这样就在全局命名空间定义了 ...
- python第六天 函数 python标准库实例大全
今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...
- zip函数-Python 3
zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表. zip函数在获取数据后,生成字典(dict)时比较好用. for examples: # Code based on P ...
- partial函数-python学习
一个函数可以有多个参数,而在有的情况下有的参数先得到,有的参数需要在后面的情景中才能知道,python 给我们提供了partial函数用于携带部分参数生成一个新函数. def add(a,b,c=2) ...
- Python hasattr() 函数 // python中hasattr()、getattr()、setattr()函数的使用
http://www.runoob.com/python/python-func-hasattr.html https://www.cnblogs.com/zanjiahaoge666/p/74752 ...
- 迭代器与函数Python学习(四)
1.1 迭代器: 迭代的工具 1.1.1 什么是迭代: 指的是一个重复的过程,每一次重复称为一次迭代,并且每一次重复的结果是下一次重复的初始值 while True: print('=====> ...
- 匿名函数 python内置方法(max/min/filter/map/sorted/reduce)面向过程编程
目录 函数进阶三 1. 匿名函数 1. 什么是匿名函数 2. 匿名函数的语法 3. 能和匿名函数联用的一些方法 2. python解释器内置方法 3. 异常处理 面向过程编程 函数进阶三 1. 匿名函 ...
- python基础-3 集合 三元运算 深浅拷贝 函数 Python作用域
上节课总结 1 运算符 in 字符串 判断 : “hello” in "asdasfhelloasdfsadf" 列表元素判断:"li" in ['li', ...
- 第017讲:函数 - Python的乐高积木
0. 你有听说过DRY吗? me:不知道 参考答案: 1. 都是重复一段代码,为什么我要使用函数(而不使用简单的拷贝黏贴)呢? me:函数可以设置参数. 参考答案:0) 可以降低代码量(调用函数只需要 ...
随机推荐
- 手把手教你用Python实现“坦克大战”,附详细代码!
小时候玩的“坦克大战”,你还记得吗? 满满的回忆 ! 今天,我们使用Python以及强大的第三方库来实现一个简单的坦克大战游戏. 整体效果 环境依赖 python3.7 pygame1.9.6 ...
- 翻译小工具制作,Python简单破解有道JS加密!
写这篇文章之前,我记得我以前好像公布一次.百度翻译的接口把版本号修改可以得到老版本,而老版本是没JS加密的,有道的呢也是一样的. ! 不过今天的教程不会这么low,咱们今天就老老实实把有道翻译的JS破 ...
- 关于ThinkCMF后台验证码不显示
最近小凯在群里看到好多同学们遇到一个头疼的问题,程序在本地调试好了之后上传服务器,后台的验证码就会不显示,今天三群的 [江苏 冰点零度 php] 同学遇到了这个问题. 开始小凯以为是GB库出来问题 ...
- 深度理解js中var let const 区别
首先要理解js中作用域的概念 作用域:指的是一个变量的作用范围 1.全局作用域 直接写在script中的js代码,在js中,万物皆对象,都在全局作用域,全局作用域在页面打开时创建,在全局作用域中有一个 ...
- java中内存的划分
java中内存的划分 栈(stack):存放的都是方法中的局部变量.方法的运行一定要在栈当中运行. 局部变量:方法的参数,或者是方法{}内部的变量 作用域:一旦超出作用域,立刻从占内存当中消失. 堆( ...
- RectTransform详解
乾坤那个大挪移 ----------------------------------------------------------------- 我是分割线 ------------------ ...
- opencv vs2013提示缺少Qedit.h问题
#pragma include_alias( "dxtrans.h", "qedit.h" ) #define __IDxtCompositor_INTERFA ...
- [APIO2018]铁人两项(圆方树)
过了14个月再重新看这题,发现圆方树从来就没有写过.然后写了这题发现自己APIO2018打铁的原因竟然是没开long long,将树的部分的O(n)写挂了(爆int),毕竟去年APIO时我啥都不会,连 ...
- php对象:__autoload()函数及单入口文件,__set(), __get(), get_class_methods(),get_class_vars()
__autoload():当类中找不到相关类的时候,会自动执行__autoload()函数,可以自动加载相关文件 __set() : 当对类的私有变量进行调用赋值时,自动调用该方法. __get() ...
- HTML5 Canvas——折线图
<script type="text/javascript"> /*1.绘制网格 网格大小 10px 网格的颜色 #ddd */ /*2.绘制坐标 轴的离边距离 20p ...