Python3基础——函数
ython 函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
定义函数
def functionname( parameters ):
"函数_文档字符串"
function_suite
return [expression]
函数文档类似于注释,用于理解函数的功能。可以使用functionname.__doc__打印出函数文档内容。
调用函数
#!/usr/bin/python
# -*- coding: UTF-8 -*- # 定义函数
def printme( str ):
"打印任何传入的字符串"
print str;
return; # 调用函数
printme("我要调用用户自定义函数!");
printme("再次调用同一函数");
注意:在Python中不允许前向引用,即在函数定义之前,不允许调用该函数。即在调用函数前,必须先定义该函数。
函数参数
首先理解下形参和实参的概念:
函数定义过程中的参数叫形参,调用函数时传入的参数叫实参,它是具体的参数值。
函数定义参数有四种类型:
1、位置参数
必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
2、默认参数
参数定义过程中为形参赋初值,调用函数时,若未给参数赋值,则使用默认值代替。
3、关键字参数
通过参数名来指定需要赋值的参数,使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
def printme( str ):
"打印任何传入的字符串"
print str;
return; #调用printme函数
printme( str = "My string");
4、可变参数(收集参数)
def functionname([formal_args,] *var_args_tuple ):
"函数_文档字符串"
function_suite
return [expression]
加了星号(*)的变量名会存放所有未命名的变量参数。其实python是把收集参数当成一个元组处理的。
若收集参数后需要加其他定制参数,为其赋值时就需要使用关键字参数赋值。尽量在定义函数时为这些定制参数设置默认值,防止出错。
函数返回值
def back():
return [1,'s',2]
def back():
return 1,2,'s'
用逗号隔开的多个数据,其实是以返回了一个元组
函数作用域
全局变量 VS 局部变量
我们通常把定义在函数外的变量成为全局变量,定义在函数内的变量称为局部变量,顾名思义,全局变量的作用域是整个代码段,局部变量的作用域就只是在它所属的代码段,变量只在它的作用域里有效。

注意:在函数内可以访问全局变量,但不能修改。如果强行修改全局变量,python会自动在函数内创建一个和全局变量同名的局部变量,被修改的是这个局部变量,全局变量不会改变。
global关键字
从上面课的代码中可以发现,如果在函数体内声明的变量名和已经有的全局变量名重复,那么局部变量就会把全局变量覆盖掉。如果想要在函数体内使用全局变量,使用前需要先用global语句来声明下用到的这个变量是全局变量。

内嵌函数
内部函数整个作用域都在外部函数之内
def fun1():
print('fun1()正在被调用……')
def fun2():
print('fun2()正在被调用……')
fun2()
fun1()
fun1()正在被调用……
fun2()正在被调用……
fun2()
报错,提示fun2没有被定义
内部函数只能在外部函数体之内调用,如果在外部函数外调用会报错。
闭包(closure)
如果在一个内部函数里,对在外部作用域的变量进行引用,那么这个内部函数就是一个闭包
def funx(x):
def funy(y):
return x*y
return funy
funx(3)返回的是函数类型
print(funx(3)(4)) 打印出12
def fun1():
x=5
def fun2():
x*=x
return x
return fun2()
fun1()报错,因为在fun2里,调用并更改了外部函数的变量x
def fun1():
x=5
def fun2():
nonlocal x
x*=x
return x
return fun2()
print(fun1()) 可以正常执行

lambda表达式(匿名函数)


作用主要是:简化代码,还不用考虑函数名问题。
Python3基础——函数的更多相关文章
- Python3基础 函数 关键字参数 的示例
镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...
- Python3基础 函数名.__doc__显示一个函数的单行与多行函数文档
镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...
- Python3基础-函数实例学习
内置函数 绝对值函数 x = abs(100) y = abs(-20) print('x=100的绝对值为:{}'.format(x)) print('y=-20的绝对值为:{}'.format(y ...
- Python3基础 函数 递归 阶乘与斐波那契数列
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- Python3基础 函数 函数名赋值操作
Python : 3.7.3 OS : Ubuntu 18.04.2 LTS IDE : pycharm-community-2019.1.3 ...
- Python3基础 函数 参数为list 使用+=会影响到外部的实参
Python : 3.7.3 OS : Ubuntu 18.04.2 LTS IDE : pycharm-community-2019.1.3 ...
- Python3基础 函数 参数 多个参数都有缺省值,需要指定参数进行赋值
Python : 3.7.3 OS : Ubuntu 18.04.2 LTS IDE : pycharm-community-2019.1.3 ...
- Python3基础 函数 收集参数+普通参数 的示例
镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...
- Python3基础 函数 默认值参数示例
镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...
随机推荐
- 构建docker私有仓库+k8s-pod应用
环境版本系统:centos7.4docker-compose version 1.26.2docker-py version: 4.3.0CPython version: 2.7.5docker-ve ...
- CPU有个禁区,内核权限也无法进入!
神秘项目 我是CPU一号车间的阿Q,是的,我又来了. 最近一段时间,我几次下班约隔壁二号车间虎子,他都推脱没有时间,不过也没看见他在忙个啥. 前几天,我又去找他,还是没看到他人,却意外地在他桌上发现了 ...
- Unity资源引用问题
前几天做项目时,遇到一个奇怪的问题: 从一处复制了一个预制体,预制体上面还附有一个材质球,材质球上关联着另一张贴图. 将所有关联的东西,均Copy两份,然后关联成一个新的预制体,最后用项目内的读取内存 ...
- Kubernetes v1.12/v1.13 二进制部署集群(HTTPS+RBAC)
官方提供的几种Kubernetes部署方式 minikube Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用.不能用于生产环 ...
- Opencv+Yolov3算法实现社交距离安全检测讲解和实战(Social Distance Detector)
在我们进行交流谈话时,人与人之间总要保持一定的距离,尤其是在疫情的情况下,人与人之间更要保持一定的安全距离,今天给大家来介绍一个检测社交距离的项目,实现社交距离检测器. 社交距离(Social Dis ...
- 计算Pi
程序: package pai; import java.math.BigDecimal; public class ComplexPi { BigDecimal result; public Com ...
- rabbitmq集成和实战
与 Spring 集成 pom 文件 使用 Maven,这里使用的 4.3.11,所以这里引入的是 rabbit 是 2.0.0,如果兼容性的话请自行去 Spring 的官网上去查 这里补充一下,sp ...
- Nginx 路由--Location的使用
一. 路由--Location的使用 9.1. Location语法规则 语法规则: location [=|~|~*|^~] /uri/ {… } 首先匹配 =,其次匹配^~,其次是按文件中顺序的正 ...
- Netty进阶和实战
实现UDP单播和广播 UDP 这样的无连接协议中,并没有持久化连接这样的概念,并且每个消息(一个UDP 数据报)都是一个单独的传输单元.此外,UDP 也没有TCP 的纠错机制. 通过类比,TCP 连接 ...
- python - 模块调用
基础 调用模块常见的两种方法 import [模块名] from [模块名] import [属性/方法] 进阶用法 调用父级目录下模块 背景介绍 目录new2(b2.py)调用上级目录new1(b1 ...