Python基础总结之第十一天开始【再深入一下函数,重新认识一下】(新手可相互督促)
感谢最近大家的关注,希望我的学习笔记对大家有帮助!也感谢各位的评论和推荐,请多多指教。
在重新认识函数之前,我们先看两个函数。一个是我们在前面笔记经常用到的print() ;另一个是input() 。
print()函数:用于打印输出,最常见的一个函数。也是我们前面几乎每个小案例都用到的函数。
我们来看下print()函数的参数,先看代码的实现:
尤其是:sep = ‘’ 和 end = ‘’ 参数的意义。
print('a','b',1,'gg') #一次输出多个对象。输出多个对象时,需要用 , 分隔。
print('a','b',1,'gg',sep= '*') #间隔多个对象,默认值是一个*号。
print('a','b',1,'gg',end= '') #来设定以什么结尾,可以换成你需要的字符。
怎么样,对输出打印的print()函数是不是会使用了呢?接下来我们再看下另一个input()函数:
input() 它可以接受一个标准输入数据,返回为 string 类型,也就是字符串。也就是说input()函数默认结果是字符串,无论你输入的是整数/小数,都会默认加上引号,变成字符串。我们看下代码:
b = input() #与用户交互,在控制台中输入数据
print(b) #我们输入的是数字对象int类型 print(type(b)) #但是我们用type()函数,查看变量b的数据类型,发现是字符串类型哦
en......我相信你学会了,也看懂了我要表达的意思,那么你可能会问,我们需要返回数字对象int类型怎么办,我们只需要将结果进行强制转换为int类型就可以了。
这里先不说这些了,后面的笔记用到的场景再给大家看吧。
接下来明白了print()函数和input()函数的用法,我们在来重新认识我们的函数。
之前的笔记有写到一点作用域的概念,现在我们看看变量的作用域:
变量的作用域:
x = 2 #全局变量
def add(): #定义函数
x = 10 #局部变量
print('这里打印的数字是:',x) add() #调用函数
print('******************************')
print('这里打印的数字是:',x)
我们在代码中看到两个变量名为:X,但是第一个函数里面的print()函数,输出的是内部的X变量;第三个print()函数,输出的是 外面的X变量。两个变量没有任何瓜葛的哦,虽然都是叫X,但是他们都是在自己的领域起到作用,函数里面的变量叫做:局部变量;函数外面的变量叫做:全局变量。记住哦,影响的范围不一样的。
如果我们想在函数体内引用外面的全局变量,怎么办?我们看下代码
x = 2 #全局变量
def add():
global x #申明我们要在函数里面使用全局变量 x
y = 10 #局部变量 print('x + y 等于 :',x+y) #我们在函数体内计算x+y=? add() #调用函数
print('******************************')
print('这里打印的数字是:',x)
在函数内多了 一个关键字:global ,我们看到的:global x 这行代码就是在声明 X是全局变量,也就是说,这个X和外面的X是同一个X。所以
2 + 10=12. 如果有不理解的小伙伴留言哦~~~
接下来我们看下什么是形参,什么是实参:写函数的时候,def关键字后面函数名括号中的参数是形参,而调用函数时指定的参数是实参。
def add(a,b = 3): #定义函数时候的参数a和b=3 ,他们是形参
print(a+b) add(a = 2,b = 5) #调用函数的时候:a = 2 ,b = 5 ,他们是实参
看到上面的函数执行后的结果等于 7 吗?说明形参即使默认等于3,但是调用的时候有实参b=5,实参中有自己的值,在执行中,使用实参的值,而不是形参的默认值。如果不指定实参,则使用的就是形参默认的值:
def add(a,b = 3): #定义函数时候的参数a和b=3 ,他们是形参
print(a+b) add(a = 2)
缺省参数的规则:
带有默认值的缺省参数,必须从右至左依次存在,下面的案例中,如果变量a在最右的位置,执行会报错的哦!
def add(a,b=5,c=1): #带有默认值的缺省参数必须从右至做依次存在。
print(a+b+c) add(2)
接下来我们看下可变参数是怎么回事:
定义可变参数,只需要在参数名前面加一个*号,调用的时候python解释器会创建一个tuple元组,把传入的参数放可变参数的元组中。
def add(a,*b): #可变参数格式,参数名前面加*一个号
print(a)
print(b) #我们看下B是不是一个空的元组 add(2) #我们只传入一个参数给a
我们多放几个参数进去,试试看看怎么样。
def add(a,*b): #可变参数格式,参数名前面加*一个号
print(a)
print(b) #在我们不确定传入的参数有多少个的时候,可变参数真的很好用,b指向了这个元组
add(2,3,'abc',[1,2,'acc']) #我们传入多个参数
如果我们传入的参数对象在列表或元组中存放,那么我们可以这样传入*参数名:
nums = [1,2,3] #也可以是元组哦 def add(a,*b):
print(a) #会将
print(b) add(*nums) #函数调用时,传入*参数,会对传入的列表或元组参数进行一个解包功能,每一个元素自动作为函数的参数。
最后我们再看下关键字参数,关键字参数是: **kargs 参数名称前两个*号哦!!也就是通常说的字典参数。我们看下代码的实现:
dict_1 = {'city':'beijing','job':'IT'} def add(name,age,**kargs): #它**kargs,就是关键字可变参数
print(name,age,kargs) add('小红','',**dict_1) #它**dict_1是代表传入一个字典
你学会了吗?如果有不懂的地方敲十代码,还是不懂就留言吧
总结:
1、当*和**符号同时出现在函数定义的参数中时,都表示参数列表可接受任意数量的参数,均是可变参数;
2、*参数,表示的是任意多个或者0个参数,说白了就是有数据的元组,或者空元组,即使一个元素,也是元组;
3、**参数,表示任意多个参数,说白了就是字典参数;
4、如果定义的函数中,两个同时存在,一定将*参数,放在**参数前面,看示例:
def add(name,*age,**kargs): #元组参数一定放在在字典参数前面!!!
5、传入的参数是*参数或者**参数,这个动作就是解包;
6、最后参数大集合:记住在函数括号中的优先级哈~~~~
def add(name,job='IT'*age,**kargs): #普通参数,缺省参数,元组参数,字典参数。记住顺序优先级哈
7、什么是缺省参数:声明的函数中,某个参数有一个默认的值。调用函数的时候,实参中有自己的值,在执行中,使用实参的值,而不使用形参的默认值。如果不指定实参,则使用的就是形参默认的值。
今天对函数有了新的认识,要 反复使用,消化~~~~~
Python基础总结之第十一天开始【再深入一下函数,重新认识一下】(新手可相互督促)的更多相关文章
- Python基础学习笔记(十一)函数、模块与包
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-functions.html 3. http://www.liao ...
- Python基础学习笔记(八)常用字典内置函数和方法
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-dictionary.html 3. http://www.lia ...
- Python基础学习笔记(七)常用元组内置函数
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-tuples.html 3. http://www.liaoxue ...
- 【笔记】Python基础二:数据类型之集合,字符串格式化,函数
一,新类型:集合 集合出现之前 python_l = ['lcg','szw','zjw'] linux_l = ['lcg','szw','sb'] #循环方法求交集 python_and_linu ...
- Python基础总结之第七天开始【认识函数的参数以及返回】(新手可相互督促)
周日的早上,吃的饱饱,刷刷抖音,开始学习新一天的知识了~~~ 函数的参数: 昨天的笔记中,我们已经使用了参数,在案例中的name和sex 就是参数. 一般的函数都是有参数的,函数的参数都是放在函数定义 ...
- python基础学习笔记(十一)
迭代器 本节进行迭代器的讨论.只讨论一个特殊方法---- __iter__ ,这个方法是迭代器规则的基础. 迭代器规则 迭代的意思是重复做一些事很多次---就像在循环中做的那样.__iter__ 方 ...
- Python基础总结之第十天开始【认识模块、包和库】(新手可相互督促)
每天都有一种备课的赶脚~~~ 什么是模块? 在实际的开发过程中,代码量肯定有成千上万行的代码,甚至十几万行代码也很正常吧... 那么这么多的代码如果放在一个文件中,肯定是很不合适的,为了以后程序的编写 ...
- python基础3之文件操作、字符编码解码、函数介绍
内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: #/usr/bin/env ...
- Python基础总结之第六天开始【认识List:列表】【认识Tuple:元组】【还有他们基本的操作】(新手可相互督促)
早,在北京的周六,热到不行~~~ 今天更新笔记列表(List).元组(Tuple)以及它们的操作方法 在列表中会经常用到List列表,前面我们认识到的有字符串,字符串数据是不能修改当前字符串里面的任意 ...
随机推荐
- 点菜网---Java开源生鲜电商平台-技术选型(源码可下载)
点菜网---Java开源生鲜电商平台-技术选型(源码可下载) 1.内容简介 点菜网目前选用的是最流行的微服务架构模式,采用前后端分离的开发模式,具备高可用,高负载,支持千万级别的数据量的请求. 2. ...
- Spark学习之路(八)—— Spark SQL 之 DataFrame和Dataset
一.Spark SQL简介 Spark SQL是Spark中的一个子模块,主要用于操作结构化数据.它具有以下特点: 能够将SQL查询与Spark程序无缝混合,允许您使用SQL或DataFrame AP ...
- 在 Angular 2 Component 中使用第三方 JS 库
本文所有内容以 Angular 2 Quick Start 项目为基础,使用 TypeScript 语言. 如上图,最近遇到一个需求,需要在一个刚启动的 Angular 2 项目中使用 snap.sv ...
- Apicloud 接入海康摄像头
1准备工作 , 加载apicloud 海康视频模块. 引入 SDK 重新生成项目测试 再config.xml写入appid 话不多说直接上代码 video=api.require("haik ...
- Programming In Lua 第一章
1,Lua可以嵌入其他应用程序(如CGILua或IUPLua). 2,lua代码的语句,分号是可以省略的.同一行可以有多条lua语句,最好用分号隔开(当然也可以不隔开) 3,外壳与lua解释器的区别. ...
- ACM之路(转载)
转载自:https://www.cnblogs.com/tianjintou/p/4139416.html 要注意,ACM的竞赛性强,因此自己应该和自己的实际应用联系起来. 适合自己的才是好的,有的人 ...
- 终于有人说清楚了--XGBoost算法
1. 什么是XGBoost XGBoost是陈天奇等人开发的一个开源机器学习项目,高效地实现了GBDT算法并进行了算法和工程上的许多改进,被广泛应用在Kaggle竞赛及其他许多机器学习竞赛中并取得了不 ...
- 开源:C# 代码自动生成工具,支持站点前后台
前言 写这个项目有很长一段时间了,期间也修修改改,写到最后,自己也没咋用(研究方向变化了). 正文 具体项目开源了:https://github.com/supperlitt/WebAutoCodeO ...
- python generator与coroutine
python generator与coroutine 协程 简单介绍 协程,又称微线程,纤程,英文名Coroutine.协程是一种用户态的轻量级线程,又称微线程.协程拥有自己的寄存器上下文和栈,调度 ...
- 测试调试-利用fiddler修改response返回结果
测试前端过程中,经常需要验证各种功能状态.不同数据层级等返回后的展示效果.一般会通过以下三种方式进行测试: 1.构造满足条件的测试数据:(耗时费力) 2.修改数据库:(前提需要了解数据库数据存储.沟通 ...