函数基础(二)(day11整理)
目录
昨日内容
函数的定义
只检测语法,不执行代码
def 函数名():
代码
函数的三种定义方式
空函数
有参函数
无参函数
函数的调用
函数的返回值
- return可以返回值,默认返回None,rentun后面不加东西也返回None
- return可以终止函数,有多个return,执行到第一个就终止
- return可以返回多个值,以元组形式返回
函数的参数
形参
接受实参,具有描述意义
位置形参
从左到右依次接收位置实参
默认形参
- 默认值,如果传参,使用传参的值,否则使用默认值(形参会多次使用同一个值)
- 默认形参必须放在位置形参后面
实参
具体的值,传参给形参
位置实参
从左到右依次传参给位置形参
关键字实参
- 按照形参名传参(参数较多使用)
- 关键字实参必须得在位置实参的后面
今日内容
可变长参数
可变长形参
*形参名
def f1(*a): # 调用函数时,有多少个位置实参,就接受多少个参数
print(a)
f1() # a是空元组
f1(1) # (1, )
f1(1,2) # (1,2)
*args(约定俗成),用元组接收多余的位置实参
**形参
def f1(**kwargs): #
print(kwargs)
f1() # 空字典
f1(x = 1) # {x:1}
f1(1,2) # (1,2)
**kwargs,用字典接受多余的关键字实参
def f1(*args,**kwargs):
print(args,kwargs)
f1(11,1,12,x = 1,x=2)
可变长实参(仅作了解)
*实参
def f1(a,b,c,d,e,f):
print(a,b,c,d,e,f)
lt= [1,2,3,4,5,6]
# f1 = (lt[0],lt[1],lt[2],lt[3],lt[4],lt[5],lt[6])
f1(*lt) # *lt把列表中的元素打散成位置实参依次传给位置实参
**实参
def f1(*args,*kwargs): # 可接受所有类型
print(args,kwargs)
def g1(a,b):
print(a,b)
dic = {'a':1,'b'=2}
g1(**dic) # a = 1,b = 2
f1(**dic) # **dic把字典打散成关键字实参传给函数
函数对象
python中一切皆对象
s = '12'
引用
s1 = s容器元素
lt = [s]作为函数的实参
def f1(x): print(x) f1(s)作为函数的返回值
def f1(s): return s s2 = f1(s)
字典/列表/元组/集合/布尔值,所有对象都可以以上四件事情
引用
def f1(): print('from f1') # 函数对象 = 函数名 func = f1 func() # f1()当作容器元素
lt = [f1,1,2,3] lt[0]() # f1()当作函数实参
def f2(f2_f1): print(f2_f1) f2_f1() f2(f1) print(f1)做函数的返回值
def f2(f2_f1): return(f2_f1) res = f2(f1) #f1 res() # f1()
函数嵌套
函数内部定义的函数,外部不能用
名称空间和作用域
名称空间
变量名/函数名都叫名称
名称空间:专门存储名称
内置名称空间(存储内置方法名称)
数据自带内置方法,python解释器自带内置方法(print/len)
全局名称空间:除了内置和局部
def f1(): x =10 y = 10 lt = [1,2,3]局部名称空间:函数内部定义的
名称空间的执行(生成)顺序
- 内置名称空间:python解释器启动就会有
- 全局名称空间:执行代码时候才会有
- 局部名称空间:函数调用的时候才会有局部
搜索顺序:先从当前所在位置搜索,找不到再按照局部>全局>内置>报错的顺序,不会逆向寻找
作用域
全局作用域
内置名称空间+全局名称空间
局部作用域
局部名称空间
全局作用域的x和局部作用域的x没有关系
局部作用域1的x和局部作用域2的x也没有关系,即使局部作用域1和局部作用域2在同一个局部
了解
global:打破了上述第一点规则
x= 10 def f1(): global x # 让global以下局部的x变成全局 x = 20 f1() print(x) # 20nonlocal:打破上述第二点规则
def f1(): def f2(): def f3(): nonlocal x # nonlocal让x成为顶层函数的局部,但是不能成为全局 x = 1 x = 2 f3() f2()
python3中,所有可变数据类型均可打破上述一切规则
lt = [10]
def f1():
lt[0] = 11
f1()
print(lt) # [11]
- 拓展(面试题)
def f1(i,lt=[]):
lt.append(i)
print(lt)
for i in range(3):
f1(i)
[0]
[0,1]
[0,1,2]
def f1(i,lt):
lt.append(i)
print(lt)
fori in range(10):
f1(i,[])
[0]
[1]
[2]
函数基础(二)(day11整理)的更多相关文章
- Less-mixin函数基础二
//mixin函数 基础使用方法 --包含选择器,example: .test(){ &:hover{ border:1px solid red; } } button{ .test; } / ...
- python 18 函数基础二
转自 http://www.cnblogs.com/BeginMan/p/3173328.html 一.装饰器(decorators) 装饰器的语法以@开头,接着是装饰器函数的名字.可选参数. 紧跟装 ...
- 函数基础(一)(day10整理)
目录 昨日内容 文件的基本应用 什么是文件 操作文件的流程 打开文件的三种模式 文件打开的两种方式 绝对路径和相对路径 绝对路径 相对路径 with管理文件上下文 文件的高级应用 新的打开文件的模式 ...
- PHP基础入门(二)【PHP函数基础】
PHP基础入门(二)--函数基础 了解 PHP基础入门详解(一) 后,给大家分享一下PHP的函数基础. 这部分主要讲的就是: 函数的声明与使用.PHP中变量的作用域.静态变量.函数的参数传递.变量函数 ...
- SVG.js 基础图形绘制整理(二)
一.折线 var draw = SVG('svg1').size(300, 300); //画折线 //使用字符串点 // var polyline=draw.polyline('0,0 100,50 ...
- LR函数基础(一)(二)
LR函数基础(一) 函数用到:web_reg_find(). lr_log_message(). lr_eval_string().strcmp().atoi() Action(){ web_r ...
- jdbc基础 (二) 通过properties配置文件连接数据库
csdn博文地址:jdbc基础 (二) 通过properties配置文件连接数据库 上一篇描述了对mysql数据库的简单操作,下面来看一下开发中应该如何灵活应用. 因为jdbc对数据库的驱动加载.连接 ...
- Python 函数基础、有序集合、文件操作(三)
一.set 特点: set是一个无序且不重复的元素集合访问速度快:天生解决元素重复问题 方法: 初始化 >>> s1 = set()>>> print(type(s ...
- 【2017-03-05】函数基础、函数四种结构、ref和out参数、递归
一.函数基础 1.函数/方法:非常抽象独立完成某项功能的一个个体 2.函数的作用: 提高代码的重用性提高功能开发的效率提高程序代码的可维护性 3.分类 固定功能函数高度抽象函数 4.函数四要素:输入, ...
随机推荐
- Android Studio [页面的跳转和传值]
AActivity.java package com.xdw.a122.jump; import android.app.Activity; import android.content.Compon ...
- 基于Spark的电影推荐系统(实战简介)
写在前面 一直不知道这个专栏该如何开始写,思来想去,还是暂时把自己对这个项目的一些想法 和大家分享 的形式来展现.有什么问题,欢迎大家一起留言讨论. 这个项目的源代码是在https://github. ...
- 【求赐教】VMware workstation 转VSphere
首先我从其他电脑拷贝过来一台虚拟机(这个说法不知道准不准确,就是把所有文件夹都拷贝过来了),然后打开VMware,通过"打开虚拟机"这个操作,直接找到本地的.vmx文件,如下图所示 ...
- phpStudy后门漏洞利用复现
phpStudy后门漏洞利用复现 一.漏洞描述 Phpstudy软件是国内的一款免费的PHP调试环境的程序集成包,通过集成Apache.PHP.MySQL.phpMyAdmin.ZendOptimiz ...
- Oracle 查询真实执行计划
什么是真实执行计划 获取Oracle的执行计划,有几种方式.(本文使用Oracle 11g XE版本,以及普通用户scott登录) explain plan for 有两个步骤: explain pl ...
- python3连接MySQL实现增删改查
PyMySQL 安装 在使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装. PyMySQL 下载地址:https://github.com/PyMySQL/PyMySQL. 如果还未安 ...
- Flask上下文管理机制流程(源码剖析)
Flask请求上下文管理 1 偏函数 partial 使用该方式可以生成一个新函数 from functools import partial def mod( n, m ): return n % ...
- Java 从入门到进阶之路(七)
在之前的文章中我们介绍了一下 java 中的对象和类,接下来我们来看一下 Java 中的方法重载. 在显示生活中,我们肯定会遇到这样一个问题,那就是我们再商场买东西的时候在付账时的选择.如下 A:在收 ...
- docker镜像制作必备技能
正文 使用过docker的都知道dockerfile,其用于定义制作镜像的流程,由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像.可参考往期文章学习:docker基础知识整理 ...
- vue图片点击放大预览
第一种:viewerjs使用介绍(PC.移动端都兼容) 1.先安装依赖 npm install v-viewer --save 2.main.js内引用并注册调用 //main.js import V ...