其实,写这个是为了督促自己看书……然后 ……其实没有然后了,人一松懈下来,就……ε=(´ο`*)))唉

第三章 函数

①def语句和参数

先举一个简单的例子:

def hello():print('Hello World!')hello()
hello()
hello()
输出:
Hello World!
Hello World!
Hello World!
注意:一定要记得冒号(被无数次报错,内心崩溃,绝望)
好了,上面这种做法很类似在C++中的这种操作
#include<bits/stdc++.h>
using namespace std;
void hello()
{cout<<"Hello World!\n";
}
int main()
{hello();hello();hello();return 0;
}

所以,我们看到,在括号里是没有参数的。

如果仅仅可以这样,那这种语言……还不如没有……
所以,理所当然,括号里也可以出现参数,举例如下:
def hello(name):print('Hello '+name+'!')hello('Alice')
hello('Bob')
输出:
Hello Alice!
Hello Bob!
------日常歪楼-------
对了,忘了提一点,在Python中,与C++不同,写在不同行的输出在运行的时候,输出的内容也会在不同行,如果要同行输出,就需要用逗号隔开。 
比如:
print('Hello ')
print('World!')

最后得到的是:
Hello
World!
这是因为print()函数自动在传入字符串末尾添加了换行符。          
但是      :
设置end关键字参数,像这样,也可以实现:Hello World!
代码如下:
print('Hello ',end='')
print('World!')

同时,注意,还有别的操作,像这样:

print('cats','dogs','mice')
#output:cats dogs mice
print('cats','dogs','mice',sep=',')
#output:cats,dogs,mice

---------言归正传-------

在上面的函数中,有一个名为name的变量当函数被调用的时候,参数就储存在这个变量中。
②返回值和return语句
还是举例说明:
import random
def getAnswer(answerNumber):if answerNumber==1:return 'It is certain'elif answerNumber==2:return 'It is decidedly so'elif answerNumber==3:return 'Yes'elif answerNumber==4:return 'Reply hazy try again'elif answerNumber==5:return 'Ask again later'elif answerNumber==6:return 'Concentrate and ask again'elif answerNumber==7:return 'My reply is no'elif answerNumber==8:return 'Outlook not so good'elif answerNumber==9:return 'Very doubtful'r=random.randint(1,9)
fortune=getAnswer(r)
print(fortune)

输出主要看运气……

比如,我是这种:
Concentrate and ask again
return语句包括:
return关键字;
函数应该返回的值或表达式。
在上面的函数里函数的名字是:getAnswer,参数的名字是:answerNumber。
r=random.randint(1,9)
fortune=getAnswer(r)
print(fortune)

这里也可以写成一行:

print(getAnswer(random.randint(1,9)))

如↑所示。

③None值
None值就是没有值,要注意首字母大写
None是NoneType数据类型的唯一值(在其他语言中,被称为null、nil或undefined)
④局部和全局作用域
作用域很重要,灰常重要,格外重要:
全局作用域中的代码不能使用任何局部变量;
但是局部作用域可以访问全局变量;
一个函数的局部作用域中的代码,不能使用其他局部作用域中的变量;
如果在不同的作用域中,你可以用相同的名字命名不同的变量。
1、局部变量不能在全局作用域内使用
比如:
def spam():eggs=31337
spam()
print(eggs)
报错信息如下:
Traceback (most recent call last):
  File "/usercode/file.py", line 4, in <module>
    print(eggs)
NameError: name 'eggs' is not defined
其实也就是说,eggs变量只属于spam()调用所创建的局部作用域。在程序执行从spam返回后,该局部作用域就被销毁了,不再有名为eggs的变量
2、局部作用域不能使用其他局部作用域内的变量
比如:
def spam():eggs=99bacon()print(eggs)
def bacon():ham=101eggs=10
spam()

输出:

99
可以很容易发现,在bacon中对eggs的赋值被完完全全忽略了……spam和bacon是两个局部作用域,所以bacon中的eggs与spam中的eggs的唯一关系就是名字恰好一样……
3、全局变量可以在局部变量中读取
def spam():print(eggs)
eggs=42
spam()
print(eggs)
输出:
42
42
在这里eggs就在全局变量中,所以局部作用域spam可以读取
4、名称相同的局部变量和全局变量
def spam():eggs='spam local'print(eggs)
def bacon():eggs='bacon local'print(eggs)spam()print(eggs)
eggs='global'
bacon()
print(eggs)
输出:
bacon local
spam local
bacon local
global
这样写使代码可读性降低,所以强烈建议尽量不要取相同的名字。
⑤global语句
举例如下:
def spam():global eggseggs='spam'
eggs='global'
spam()
print(eggs)
输出:
spam
如何区分局部变量和全局变量
1、如果变量在全局作用域中使用(即在所有函数之外),它就总是全局变量
2、如果在一个函数中,有针对该变量的global语句,它就是全局变量
3、否则,如果该变量用于函数中的赋值语句,它就是局部变量
4、如果该变量没有用在赋值语句中,就是全局变量
举例:
def spam():global eggseggs='spam'#this is globaldef bacon():eggs='bacon'#this is localdef ham():print(eggs)#this if globaleggs=42#this is global
spam()
print(eggs)
输出:
spam
⑥异常处理
用try except语句调试,具体方法和C++里调试的方法区别不大,就是截取片段来试,酱紫。
'''
然后接下来,书里是一个很……的小程序,就不放上来了,或者哪天实在无聊敲一下。
所以就到这里啦。(✺ω✺)
'''

《Python编程快速上手——让繁琐的工作自动化》读书笔记2相关推荐

  1. 全球通史读书笔记上(第六章——古代文明的新起)

    一.印度文明 1. 哈巴拉文化消失的原因 (1)被雅利安人所破坏 (2)奴隶主阶级的沉重剥削. (3)过度砍伐森林,水土流失,生态失衡 2. (1)印度的楼兰--摩亨约·达罗(或为最早期的印度帝国) ...

  2. 全球通史读书笔记上(第七章——战争的起源)

    一.梭伦改革 1.梭伦改革地点:希腊雅典.雅典在希腊文明史中扮演重要的角色.伯利克里:"雅典是全希腊的学校." 2.梭伦改革背景:公元前6世纪,雅典的奴隶制度确立.贵族成为特权阶层 ...

  3. 《全球通史》读书笔记2

    关键问题似乎在于,在技术变革和使之成为必需的社会变革之间,存在一个时间差.造成这个时间差的原因在于:技术变革能提高生产率和生活水平,所以很受欢迎,且很快便被采用:而社会变革则要求人类进行自我评估和自我 ...

  4. 《全球通史》读书笔记1

    这两天开始读斯塔夫理阿诺斯的<全球通史>第7版. 在推荐序里的一句话读了特别有感觉."--我们甚至依然在用别人的模式理解我们和整个世界的历史."我有时也在想,我们的历史 ...

  5. 读 L. S. Stavrianos 之 《全球通史:从史前到21世纪》

    Leften Stavros Stavrianos, 吴象婴, 梁赤民. 全球通史:从史前到21世纪:第7版新校本.上册. ISBN: 978-7-301-26938-1. Leften Stavro ...

  6. 读书笔记|如何让用户为你的产品尖叫

    文/PM十二   编辑/李老太.小太阳  Hi各位小伙伴,最近新认识的一位从事编辑的小伙伴推荐了<用户思维+:好产品让用户为自己尖叫>,趁着周末把它读完了,因此今天要分享的是一篇读书笔记. ...

  7. 《精通Unix下C语言与项目实践》读书笔记(16)

    <精通Unix下C语言编程与项目实践>读书笔记(new) 文章试读  不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八 ...

  8. 第一篇读书笔记,关于UML和模式应用(1)--书籍简介

    新添加了一个读书笔记分类,以后多写一些读书笔记吧.因为真的觉得自己技术太差了,写不出好文章了. 关于UML和模式应用(1)--书籍简介 Applying UML and patterns(Craig ...

  9. PMP读书笔记(第13章)

    大家好,我是烤鸭:     今天做一个PMP的读书笔记. 第十三章 项目相关方管理 项目相关方管理 项目相关方管理的核心概念 项目相关方管理的趋势和新兴实践 裁剪考虑因素 在敏捷或适应型环境中需要考虑 ...

  10. PMP读书笔记(第12章)

    大家好,我是烤鸭:     今天做一个PMP的读书笔记. 第十二章 项目采购管理 项目采购管理 项目采购管理的核心概念 项目采购管理的趋势和新兴实践 裁剪考虑因素 在敏捷或适应型环境中需要考虑的因素 ...

最新文章

  1. pandas -表的横向合并 纵向合并
  2. python灰度共生矩阵_四:利用python的skimage计算灰度共生矩阵
  3. java getqueue 0_【求助】Exception in threadAWT-EventQueue-0java.lang.Null
  4. CString、std::string格式化字符串
  5. Python定义函数的三种方式
  6. 转: ajax跨域之JSONP
  7. 区块链软件公司:区块链使用程序如何成为战胜商场应战的垫脚石
  8. iOS开发:通过经纬度获得城市、省份等信息
  9. cas4.2.7与shiro进行整合
  10. MAT分析android内存泄漏
  11. python中json如何存放字节数组中_测试面试题集锦(四)| Linux 与 Python 编程篇(附答案)...
  12. MatConvNet 相关函数解释说明
  13. 设置代理后谷歌浏览器无法使用代理
  14. docker 安装wiki.js 和wekan
  15. 大厂面试 | 蚂蚁金服前端岗三面真题!
  16. i3 10105F参数配置 i3 10105F怎么样
  17. C语言C Prime总结(2-7章)
  18. /dev/sr0 3.7G 3.7G 0 100% /media/CentOS_6.8_Final
  19. mysql联合索引和索引优化的理解
  20. 离散学习--笛卡尔积

热门文章

  1. java获取虎牙直播弹幕消息,虎牙直播弹幕筛选器
  2. netty-socketio+spring boot 长链接 实时通信 消息推送
  3. Pygame实战之外星人入侵NO.7——大批外星人来袭
  4. 【某deed和某app面试】
  5. \xmemory(102): error C4996: 'std::uninitialized_copy::_Unchecked_iterators::_Deprecate':
  6. Linux设备模型分析之bus(基于3.10.1内核)
  7. js实现23种设计模式
  8. JAVA-输出一个三角形(详解)
  9. IDEA直接查找快捷键来修改这个快捷键
  10. UCI-HAR数据集CNN分类