1,函数的定义

  函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数分为自定义函数和内置函数,内置函数就是python内部自带的一些函数,如:print()、int()等。自定义函数是我们自己为了完成某个功能而自己写的函数。

def func():    # 自定义函数
print('zxc') """
def关键字+函数名:
函数体
函数名的命名规则和变量的一样
函数体就是完成功能的代码
"""

  2,函数的调用

  函数名()即可调用函数。

def func():    # 自定义函数
print('zxc')
# 函数的调用
func() # 运行结果打印了zxc

  3,函数的返回值

  为了使用函数运行后的一些数据,我们需要函数调用后能够返回这些数据,所以就要定义返回值!

  定义返回值的关键字是return

    1,没有return和只有return,调用函数后返回None

# 函数的返回值
def re():
s = 'zxc'
print(re()) # None def re():
s = 'zxc'
return
print(re()) # None

    2,return加一个返回值的,通过变量=函数名()可以获取返回值

def re():
s = 'zxc'
return s
s1 = re()
print(s1) # zxc

    3,return加多个返回值的,通过一个或对应个数的变量来接收

      一个接收的是所有返回值组成的一个元组

      多个接收要对应返回值的个数,一一对应赋值

def re():
s = 'zxc'
s1 = ''
return s, s1
a = re() # ('zxc', '123')赋值给a
x, y = re() # zxc和123分别赋值给x和y
# z, b, c = re() # 接收和返回的不对应 报错!
print(a)
print(x, y)

    ps:在函数体中遇到return就会结束函数!

def re():
s = 'zxc'
return s # 遇见return就结束函数
print('')
print(re()) # 返回zxc 但是123不会打印

  4,函数的参数

  函数的参数分为形参和实参

def func(s):  # s为形式参数  形参
print(s) func('zxc') # zxc为实际参数 实参

    以实参来看,只有两种,按位置进行传参和按关键字进行传参

def func(x, y, z):
print(x)
print(y)
print(z)
# 以实参来看
func(1, 2, 3) # 按位置进行传参 传递的参数个数必须要对应
func(y=2, x=1, z=3) # 按照关键字进行传参 无须考虑位置关系
func(1, z=3, y=2) # 在先按照位置传参的前提下后面的参数可以按照关键字进行传参
# func(x=1, 2, 3) # 按关键字传参不能放在最前 报错

    以形参来看,分为四种,位置参数、*args、默认参数、**kwargs

def func(s, *args, default = '默认值', **kwargs):
print(s) #
print(args) # ('a', 'b', 'c')
print(default) # 默认值
print(kwargs) # {'s1': '123', 's2': '456'}
func(1, 'a', 'b', 'c', s1='', s2='')
l = ['a', 'b', 'c']
d = {'s1': 123, 's2': 456}
func(1, *l, **d) # 列表和元组加上*号可将其按顺序打散进行传参,字典加上**
"""
s 接收位置参数 有必须传
*args 动态参数 接收任意多个位置参数 将其组合为元组接收
default = '默认值' 默认参数 没有实参就='默认值'
**kwarges 动态参数 接收任意多个关键字参数 将其组合为字典接收
几种形参的先后顺序:
位置参数,*arges,默认参数,**kwarges
"""

    默认参数的陷阱

def func(li=[]):
li.append(1)
return li
print(func()) # [1]
print(func()) # [1, 1]
print(func([1, 2])) # [1, 2, 1]
print(func()) # [1, 1, 1]
# 如果函数的默认参数的值是可变数据类型,不传参数多次调用将公用同一个值

  5,函数的命名空间和作用域

    内置命名空间,全局命名空间和局部命名空间
内置命名空间:python解释器加载时创建的命名空间,用于储存内置的一些数据名字和函数名字
全局命名空间:我们的代码从上到下运行时,将我们用到的命名储存起来的空间
局部命名空间:用于储存函数内部的命名的空间,函数调用时才会创建,结束时会消失

    命名空间

# 命名空间
a = 1
def func():
b = 2
def inner():
c = 1
print(a, b) # print在内置命名空间中,a在全局命名空间中,b在局部命名空间中
inner()
# print(c) # 报错 c在inner函数的命名空间中
print(a)
func()
# print(b) # 报错 b在func函数的命名空间中 """
通过上面的例子可以看出:内置命名空间 > 全局命名空间 > 局部命名空间
命名空间不能向下访问,只能向上访问!
"""

    作用域

# 作用域
"""
全局作用域和局部作用域
全局作用域:内置命名空间和全局命名空间中的都属于全局作用域 -- globals()获取全局作用域的内容
局部作用域:函数中的局部命名空间 -- locals()获取本地作用域的内容
""" a = 1
c = 0
def func():
b = 1
def inner():
global a # 使a在局部的操作能够作用于全局
a += 1
nonlocal b # 使b在局部的操作能够作用于上一层
b += 1
inner()
print(b) #
# nonlocal c # 报错 说明nonlocal不能使局部的操作作用于全局
# c += 1
func()
print(a) #

  6,函数的嵌套

    函数的嵌套调用

# 函数的嵌套调用
def func():
print('zxc') def func1():
func()
func()
# 在函数内部可以使用外部的已经定义好的函数

    函数的嵌套

# 函数的嵌套
def func():
def inner(): # 嵌套
print('zxc')
# inner() # 报错
# 外部不能直接调用函数内部嵌套的函数

    函数名的本质:一串内存地址

"""
函数名:第一类对象
1,函数名可以赋值
2,函数名可以作为容器类型的元素
3,函数名可以是参数和返回值
"""
def func():
print('zxc')
ret = func # 赋值
ret() # zxc def func():
print('zxc')
def func1():
print('zxf')
li = [func, func1] # 容器类型的元素
for i in li:
i() # zxc zxf def func():
print('zxc')
return func # 返回值
def inner(f):
f()
ret = func()
ret()
inner(func) # 参数

  7,闭包

# 闭包
def func():
a = 1
def inner():
print(a)
return inner
ret = func()
ret()
"""
在嵌套的内部函数中调用了外部函数的变量就会形成一个闭包。
功能: 当调用这个函数时,形成闭包调用的外部变量会专门保存到内存中,不会在函数结束是清除,
以便在多次调用时节省重复创建变量的时间。
"""

  

python基础九之函数的更多相关文章

  1. python基础——高阶函数

    python基础——高阶函数 高阶函数英文叫Higher-order function.什么是高阶函数?我们以实际代码为例子,一步一步深入概念. 变量可以指向函数 以Python内置的求绝对值的函数a ...

  2. 初学Python(九)——函数

    初学Python(九)--函数 初学Python,主要整理一些学习到的知识点,这次是函数. 函数定义: # -*- coding:utf-8 -*- #函数的定义 def my_function(x) ...

  3. python基础——内置函数

    python基础--内置函数  一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highl ...

  4. python学习第五讲,python基础语法之函数语法,与Import导入模块.

    目录 python学习第五讲,python基础语法之函数语法,与Import导入模块. 一丶函数简介 1.函数语法定义 2.函数的调用 3.函数的文档注释 4.函数的参数 5.函数的形参跟实参 6.函 ...

  5. 自学Python之路-Python基础+模块+面向对象+函数

    自学Python之路-Python基础+模块+面向对象+函数 自学Python之路[第一回]:初识Python    1.1 自学Python1.1-简介    1.2 自学Python1.2-环境的 ...

  6. Python基础(协程函数、内置函数、递归、模块和包)-day05

    写在前面 上课第五天,打卡: 凭着爱,再回首: 一.协程函数(生成器:yield的表达式形式) 1.yield 的语句形式: yield 1 - 这种方式在 Python基础(函数部分)-day04  ...

  7. 『Python基础-13』函数 Function

    这篇笔记记录的知识点: 函数的基本概念 自定义函数 函数的几种参数 编程的三种方式: 1.OOP 面向对象编程,万物皆对象,以class为主,抽象化 2.POP 面向过程编程,万事皆过程,def定义过 ...

  8. python 基础篇 11 函数进阶----装饰器

    11. 前⽅⾼能-装饰器初识本节主要内容:1. 函数名的运⽤, 第⼀类对象2. 闭包3. 装饰器初识 一:函数名的运用: 函数名是一个变量,但他是一个特殊变量,加上括号可以执行函数. ⼆. 闭包什么是 ...

  9. python基础之open函数和路径处理

    前言 本次内容主要介绍文件处理open函数以及路径处理. 一.open函数 根据前面介绍的函数调用方式,调用open函数. #open函数调用 open() TypeError: open() mis ...

随机推荐

  1. typescript+react+antd基础环境搭建

    typescript+react+antd基础环境搭建(包含样式定制) tsconfig.json 配置 // 具体配置可以看上面的链接 这里module moduleResolution的配置都会影 ...

  2. [运维]Dell R710 raid配置 标签: raid运维 2017-04-15 19:35 581人阅读 评论(16)

    Dell R系列的一些服务器,raid的配置都大同小异,公司大部分的服务器,都是Dell R710型号的,这个型号的raid界面配置起来还是很简单的,下面来跟随小编体验一下raid如何配置吧.ps:图 ...

  3. Sublime Text3安装教程,配置教程,常用插件安装等方法

    前言: sublimeText3的特点: 1.Sublime Text 是一款跨平台代码编辑器,在Linux.OS X和Windows下均可使用. 2.Sublime Text 是可扩展的,并包含大量 ...

  4. 【JZOJ4813】【NOIP2016提高A组五校联考2】running

    题目描述 小胡同学是个热爱运动的好孩子. 每天晚上,小胡都会去操场上跑步,学校的操场可以看成一个由n 个格子排成的一个环形,格子按照顺时针顺序从0 到n-1 标号. 小胡观察到有m 个同学在跑步,最开 ...

  5. git day01笔记 常用操作命令 快照 推送 拉取

    ansible 批量在远程主机上执行命令或者脚本 git   做版本控制的一个工具 ## git操作命令: 工作区:当前编辑的区域 缓存区:add 之后的区域 本地仓库:commit之后的区域 远程仓 ...

  6. Ceph 之Multisite 下的bucket reshard

    目录 一.背景和问题 二.bucket reshard 过程 主集群信息汇总 Multisite 下手动reshard References 一.背景和问题 默认情况下只有当单个bucket承载的ob ...

  7. 用var 变量=函数名 方式调用函数时如何传值的问题

    通过:xmlhttp.onreadystatechange= function(){FuncName(param)};orxmlhttp.onreadystatechange= new Functio ...

  8. nodeJs学习-02 fs模块(文件操作)

    读文件: const fs = require('fs'); //读文件(异步) readFile(文件名,回调函数) fs.readFile('section03/testData/aaa.txt' ...

  9. 在WPF中使用谷歌地图和高德地图

    原文:在WPF中使用谷歌地图和高德地图 在桌面软件开发中可能会遇到这样的需求:显示地图. 常用的地图API有Google Map和高德地图.二者都提供了各种平台的API. 为了方便集成,本文使用Jav ...

  10. 《C语言深度解剖》学习笔记之关键字

    第一章 关键字 C语言共有32个关键字. 关键字   auto 声明自动变量 int 声明整型变量 long 声明长整型变量 char 声明字符型变量 float 声明浮点型变量 short 声明短整 ...