编程学习第七天,定义函数
2016-03-14 23:22
176 查看
好的,编程学习来到了第七天,按惯例还是想先啰嗦几句的
首先我已经买了伍佰的票,五月七号太原山西省体育中心体育馆,各种火车票、旅店全都订好了,就等着五月放假啦。然后我最近这几天有点心神不宁,为什么呢,因为昨天早上,也就是3.13周日凌晨四点,和母亲谈了一次话,说的内容无非就是和前女友的事,以及我按惯例对单位的抨击,说了很多单位效益不好,日子可能不好过的话,我并不知道她的真实想法,但她口头上说了你再干一年,假如效益不好,工资降太多,你就去南方发展这样的话,当时我觉得特别爽,趁热打铁跟她说我现在特别努力,天天看书学习,在这样的企业,一来以后日子很可能会难过,二来我自己工作的也特别不开心。现在的我好像看到了一丝曙光,今天甚至兴奋的早上八九点才睡,我真的可以出去闯荡吗?我是不是在追求自己梦想的道路上越走越远了呢?然而在热血冷却过后,我却陷入了迷茫,我甚至在智联上看了一下职位需求,在上海,经验少的6k-8k,高了之后1k往上走,对于我现在3k出头的工作,我真的出外拿了6k的工资,会是一件好事吗?按长远来看,可能是一件好事,因为我的工资会是和我能力成正比的,而在现在的单位,我能力上升了,带来的好处也不过尔尔,按网上说法就是撑不死,饿不死的状态,而且我所在的单位是属于能源类的,搞石油的,一来我们这样的程序猿是得不到相应的报酬的,二来企业亏损,以后即使不会被离职,待遇上升空间也不大,简单来说就是混吃等死的状态,这也不是我想要的,我羡慕别人精彩的生活,他们月薪年薪能上10k往上,我却只有他们的一半,而且在工作五六年七八年之后,就不只是一半的事了。马云说辞职无非两个事,心受伤了,钱少了,我现在两样都占了,唯一能安慰自己的也就是未来有个地方能养老,又或者这个单位管理松散,偶尔想请假就请假,自由的时间一大把,而现在的单位我又觉得很大概率不能给我提供未来多好的养老条件,一方面特别的害怕以后的日子更难过,一方面又鄙视现在的自己,另一方面又鄙视这臃肿效率低下的企业文化,不管从哪方面看离职都是最好的选择吧。
离职的理由:工资少,投入产出不成正比,可能干一辈子工资变化不大,挣的工资可能刚好够花但想再高品质点就有点难,企业管理垃圾和我的理念不同,未来还有降薪、被离职、受到不公平待遇的可能,所谓的安稳可能几年以后也变成假象了,虽然适合养老,但是现在就觉得自己一点斗志都没有,没心情去学什么新技术,学了工资也涨不了一分钱,就算自己有能力,单位里比我有能力情商还比我高的已经甩我几条街了,短时期想混好是没什么可能,个人提升不大,没有人际关系升职空间不大,人和人之间难以相处,情商不高玩不转,每天混日子心理越来越空虚,有抑郁症状,在外工作的话能力和收入能有公正的待遇,也不会有混日子的状态,心态会调整好。
不离职的理由:现在的工作工资安稳,虽然工资在降但是靠辈分慢慢也会涨上来,日子安稳个人时间比较充裕,其实就是一个特别稳的选择,适合养老,二十几岁抬头就能看见三十岁四五十岁的自己,在父母身边,比较符合他们的观点,城市消费水平不高,以后有孩子了可能日子会好过点,家里人可以帮我安排事情,去外面工作心理没谱,自己的能力现在很大可能已经不适合外面的世界了,一切要从头开始,那么这几年就浪费掉了,而且也不一定能有个特别好的开始,私企也要看运气,看能不能碰到好老板,未来的办公室政治未必比现在轻松。
其实说来说去,一方面是对外面世界未知的恐惧,另一方面是现在安稳的条件怕是没法失而复得,害怕父母操心更多,唉,自己已经进入一个迷茫期了。
其实我自己的话,是很想出去的。
算了不多说了,今天继续学python,学好知识了才可以出人头地啊。
习题17更多文件操作
本节将学习把一个文件的内容拷贝到另一个文件中。
拷贝的主要思路是读一个文件的内容,然后再用w方式打开或新建另一个文件,把读到的内容写入新文件里。
本节引入了exists模组,因此可以使用exists([file])命令,该命令可以用来确定文件是否存在,返回true和false。
import可以引入其他程序员写的更好更通用的代码,实际上编程时基本上也是这么做的。
为什么操作完文件要.close()呢?因为这时文件内容是保存在缓冲区的,并没有真正写入文件,如果不close,那么文件的内容是可能会丢失的,close相当于保存并关闭文件。
另外当我使用类似open(file).read().close()时,就会报关于close的错误,对此教材的解释是使用.read()后,文件被读到结尾自动close,不需要我们再close了。
习题18命名、变量、代码、函数
本节要开始学习函数(function)了!
函数的作用:
1.给代码片段命名,就像变量给字符串和数字命名一样。
2.可以接受参数,就跟脚本接受argv一样。
3.通过使用#1 #2,它们可以让我们创建“微型脚本”或者“小命令”
函数工作起来就像脚本一样。
定义或者说新建函数的命令是def。
本节命令如下:
# this one is like your scripts with argv
def print_two(*args):
arg1, arg2 = args
print "arg1: %r, arg2: %r" % (arg1, arg2)
# ok, that *args is actually pointless, we can just do this
def print_two_again(arg1, arg2):
print "arg1: %r, arg2: %r" % (arg1, arg2)
# this just takes one argument
def print_one(arg1):
print "arg1: %r" % arg1
# this one takes no arguments
def print_none():
print "I got nothin'."
print_two("M","c")
print_two_again("M","c")
print_one("First!")
print_none()
这里我们可以看到:以print_two为例,
1.首先用def命令表示我们要定义函数了
2.接着是函数名称print_two
3.然后是()一对括号,括号里写上函数要传的参数,这里用了*args,并没有确定参数的个数,而在程序里进行解包
4.然后是一个冒号":"
5.冒号以下,首先要空四个空格,表示下面的行都属于print_two函数,都是这个函数的内容
四个空格是必须的,否则下面的代码就不属于我们定义的函数了,结束一个函数也很简单,代码取消四个空格的缩进就行了。
'*args'参数中'*'的意思是函数把所有参数都接受进来放到名字为'args'的列表中。
最后是写函数的时候要记得检查几点:
1.是否用了def,def后接的是不是函数名
2.函数名后是不是括号
3.括号里有没有参数,参数名有没有重复,多个参数有没有用逗号隔开
4.括号后面有没有接冒号
5.冒号后的代码是不是首行缩进了四个空格
6.结束定义函数后有没有取消四个空格的缩进
调用函数时要注意:
1.是否使用了函数的名称
2.函数名称后是否有括号()
3.括号里有没有参数,多个参数有没有用逗号隔开
习题19函数和变量
本节练习继续就函数进行练习,详解了几个实际上的应用,代码如下:
def cheese_and_crackers(cheese_count, boxes_of_crackers):
print "You have %d cheeses!" % cheese_count
print "You have %d boxes of crackers!" % boxes_of_crackers
print "Man that's enough for a party!"
print "Get a blanket.\n"
print "We can just give the function numbers directly:"
cheese_and_crackers(20, 30)
print "OR, we can use variables form our script:"
amount_of_cheese = 10
amount_of_crackers = 50
cheese_and_crackers(amount_of_cheese, amount_of_crackers)
print "We can even do math inside too:"
cheese_and_crackers(10 + 20,5 + 6)
print "And we can combine the two, variables and math:"
cheese_and_crackers(amount_of_cheese + 100, amount_of_crackers + 1000)
可以看到调用函数时,可传的参数包括变量名、实际值、算式甚至变量名和算式结合。
加分习题里提到用十种方法运行函数,我并不太明白,是在参数那里做文章吗,那样的话开动脑洞,可以有不止十种方法吧。
习题20函数和文件
本节依然是对函数的练习,引入了文件操作。
代码如下:
from sys import argv
script, input_file = argv
def print_all(f):
print f.read()
def rewind(f):
f.seek(0)
def print_a_line(line_count, f):
print line_count, f.readline()
current_file = open(input_file)
print "First let's print the whole file:\n"
print_all(current_file)
print "Now let's rewind, kind of like a tape."
rewind(current_file)
print "Let's print three lines:"
current_line = 1
print_a_line(current_line, current_file)
current_line = current_line + 1
print_a_line(current_line, current_file)
current_line = current_line + 1
print_a_line(current_line, current_file)
本节学习了file.seek()这个命令,这个命令是用来设置文档当前位置偏移的,默认参数为'0',也就是回到最开始,当我们用read或readline读文件后,如果没有设置read的偏移量也就是参数时,此时偏移量在文档最后,而readline则是下一行开始,这也解释了为什么每次调用print_a_line函数,脚本都会输出文档不同的一行。
关于seek命令,我找了一个文章:
Python seek()方法
另外这里的current_line = current_line + 1,实际上是自增过程,也就是说使用current_line += 1即可。
关于readline是如何分辨一行的,readline()命令会扫描文件的每一个字节,直到找到一个\n位置,然后它停止读取文件,并返回之前的内容,被读取的文件会记录调用readline()后的读取位置,这样下一次被调用时就从那里开始读取了。
好啦,今天差不多就到这吧,所谓的贪多嚼不烂,我也是有点累了,今天写了很多,自己也想了很多,直到现在也分不清未来的出路,难过,难受,迷茫,我真的就差一点动力就能迈出那一步了,可是之后呢,迈出那一步之后,我会面对一个什么样的未来呢,这又让我难过,我希望一切会更好,至少比现在要好。。晚安,地球。
首先我已经买了伍佰的票,五月七号太原山西省体育中心体育馆,各种火车票、旅店全都订好了,就等着五月放假啦。然后我最近这几天有点心神不宁,为什么呢,因为昨天早上,也就是3.13周日凌晨四点,和母亲谈了一次话,说的内容无非就是和前女友的事,以及我按惯例对单位的抨击,说了很多单位效益不好,日子可能不好过的话,我并不知道她的真实想法,但她口头上说了你再干一年,假如效益不好,工资降太多,你就去南方发展这样的话,当时我觉得特别爽,趁热打铁跟她说我现在特别努力,天天看书学习,在这样的企业,一来以后日子很可能会难过,二来我自己工作的也特别不开心。现在的我好像看到了一丝曙光,今天甚至兴奋的早上八九点才睡,我真的可以出去闯荡吗?我是不是在追求自己梦想的道路上越走越远了呢?然而在热血冷却过后,我却陷入了迷茫,我甚至在智联上看了一下职位需求,在上海,经验少的6k-8k,高了之后1k往上走,对于我现在3k出头的工作,我真的出外拿了6k的工资,会是一件好事吗?按长远来看,可能是一件好事,因为我的工资会是和我能力成正比的,而在现在的单位,我能力上升了,带来的好处也不过尔尔,按网上说法就是撑不死,饿不死的状态,而且我所在的单位是属于能源类的,搞石油的,一来我们这样的程序猿是得不到相应的报酬的,二来企业亏损,以后即使不会被离职,待遇上升空间也不大,简单来说就是混吃等死的状态,这也不是我想要的,我羡慕别人精彩的生活,他们月薪年薪能上10k往上,我却只有他们的一半,而且在工作五六年七八年之后,就不只是一半的事了。马云说辞职无非两个事,心受伤了,钱少了,我现在两样都占了,唯一能安慰自己的也就是未来有个地方能养老,又或者这个单位管理松散,偶尔想请假就请假,自由的时间一大把,而现在的单位我又觉得很大概率不能给我提供未来多好的养老条件,一方面特别的害怕以后的日子更难过,一方面又鄙视现在的自己,另一方面又鄙视这臃肿效率低下的企业文化,不管从哪方面看离职都是最好的选择吧。
离职的理由:工资少,投入产出不成正比,可能干一辈子工资变化不大,挣的工资可能刚好够花但想再高品质点就有点难,企业管理垃圾和我的理念不同,未来还有降薪、被离职、受到不公平待遇的可能,所谓的安稳可能几年以后也变成假象了,虽然适合养老,但是现在就觉得自己一点斗志都没有,没心情去学什么新技术,学了工资也涨不了一分钱,就算自己有能力,单位里比我有能力情商还比我高的已经甩我几条街了,短时期想混好是没什么可能,个人提升不大,没有人际关系升职空间不大,人和人之间难以相处,情商不高玩不转,每天混日子心理越来越空虚,有抑郁症状,在外工作的话能力和收入能有公正的待遇,也不会有混日子的状态,心态会调整好。
不离职的理由:现在的工作工资安稳,虽然工资在降但是靠辈分慢慢也会涨上来,日子安稳个人时间比较充裕,其实就是一个特别稳的选择,适合养老,二十几岁抬头就能看见三十岁四五十岁的自己,在父母身边,比较符合他们的观点,城市消费水平不高,以后有孩子了可能日子会好过点,家里人可以帮我安排事情,去外面工作心理没谱,自己的能力现在很大可能已经不适合外面的世界了,一切要从头开始,那么这几年就浪费掉了,而且也不一定能有个特别好的开始,私企也要看运气,看能不能碰到好老板,未来的办公室政治未必比现在轻松。
其实说来说去,一方面是对外面世界未知的恐惧,另一方面是现在安稳的条件怕是没法失而复得,害怕父母操心更多,唉,自己已经进入一个迷茫期了。
其实我自己的话,是很想出去的。
算了不多说了,今天继续学python,学好知识了才可以出人头地啊。
习题17更多文件操作
本节将学习把一个文件的内容拷贝到另一个文件中。
拷贝的主要思路是读一个文件的内容,然后再用w方式打开或新建另一个文件,把读到的内容写入新文件里。
本节引入了exists模组,因此可以使用exists([file])命令,该命令可以用来确定文件是否存在,返回true和false。
import可以引入其他程序员写的更好更通用的代码,实际上编程时基本上也是这么做的。
为什么操作完文件要.close()呢?因为这时文件内容是保存在缓冲区的,并没有真正写入文件,如果不close,那么文件的内容是可能会丢失的,close相当于保存并关闭文件。
另外当我使用类似open(file).read().close()时,就会报关于close的错误,对此教材的解释是使用.read()后,文件被读到结尾自动close,不需要我们再close了。
习题18命名、变量、代码、函数
本节要开始学习函数(function)了!
函数的作用:
1.给代码片段命名,就像变量给字符串和数字命名一样。
2.可以接受参数,就跟脚本接受argv一样。
3.通过使用#1 #2,它们可以让我们创建“微型脚本”或者“小命令”
函数工作起来就像脚本一样。
定义或者说新建函数的命令是def。
本节命令如下:
# this one is like your scripts with argv
def print_two(*args):
arg1, arg2 = args
print "arg1: %r, arg2: %r" % (arg1, arg2)
# ok, that *args is actually pointless, we can just do this
def print_two_again(arg1, arg2):
print "arg1: %r, arg2: %r" % (arg1, arg2)
# this just takes one argument
def print_one(arg1):
print "arg1: %r" % arg1
# this one takes no arguments
def print_none():
print "I got nothin'."
print_two("M","c")
print_two_again("M","c")
print_one("First!")
print_none()
这里我们可以看到:以print_two为例,
1.首先用def命令表示我们要定义函数了
2.接着是函数名称print_two
3.然后是()一对括号,括号里写上函数要传的参数,这里用了*args,并没有确定参数的个数,而在程序里进行解包
4.然后是一个冒号":"
5.冒号以下,首先要空四个空格,表示下面的行都属于print_two函数,都是这个函数的内容
四个空格是必须的,否则下面的代码就不属于我们定义的函数了,结束一个函数也很简单,代码取消四个空格的缩进就行了。
'*args'参数中'*'的意思是函数把所有参数都接受进来放到名字为'args'的列表中。
最后是写函数的时候要记得检查几点:
1.是否用了def,def后接的是不是函数名
2.函数名后是不是括号
3.括号里有没有参数,参数名有没有重复,多个参数有没有用逗号隔开
4.括号后面有没有接冒号
5.冒号后的代码是不是首行缩进了四个空格
6.结束定义函数后有没有取消四个空格的缩进
调用函数时要注意:
1.是否使用了函数的名称
2.函数名称后是否有括号()
3.括号里有没有参数,多个参数有没有用逗号隔开
习题19函数和变量
本节练习继续就函数进行练习,详解了几个实际上的应用,代码如下:
def cheese_and_crackers(cheese_count, boxes_of_crackers):
print "You have %d cheeses!" % cheese_count
print "You have %d boxes of crackers!" % boxes_of_crackers
print "Man that's enough for a party!"
print "Get a blanket.\n"
print "We can just give the function numbers directly:"
cheese_and_crackers(20, 30)
print "OR, we can use variables form our script:"
amount_of_cheese = 10
amount_of_crackers = 50
cheese_and_crackers(amount_of_cheese, amount_of_crackers)
print "We can even do math inside too:"
cheese_and_crackers(10 + 20,5 + 6)
print "And we can combine the two, variables and math:"
cheese_and_crackers(amount_of_cheese + 100, amount_of_crackers + 1000)
可以看到调用函数时,可传的参数包括变量名、实际值、算式甚至变量名和算式结合。
加分习题里提到用十种方法运行函数,我并不太明白,是在参数那里做文章吗,那样的话开动脑洞,可以有不止十种方法吧。
习题20函数和文件
本节依然是对函数的练习,引入了文件操作。
代码如下:
from sys import argv
script, input_file = argv
def print_all(f):
print f.read()
def rewind(f):
f.seek(0)
def print_a_line(line_count, f):
print line_count, f.readline()
current_file = open(input_file)
print "First let's print the whole file:\n"
print_all(current_file)
print "Now let's rewind, kind of like a tape."
rewind(current_file)
print "Let's print three lines:"
current_line = 1
print_a_line(current_line, current_file)
current_line = current_line + 1
print_a_line(current_line, current_file)
current_line = current_line + 1
print_a_line(current_line, current_file)
本节学习了file.seek()这个命令,这个命令是用来设置文档当前位置偏移的,默认参数为'0',也就是回到最开始,当我们用read或readline读文件后,如果没有设置read的偏移量也就是参数时,此时偏移量在文档最后,而readline则是下一行开始,这也解释了为什么每次调用print_a_line函数,脚本都会输出文档不同的一行。
关于seek命令,我找了一个文章:
Python seek()方法
另外这里的current_line = current_line + 1,实际上是自增过程,也就是说使用current_line += 1即可。
关于readline是如何分辨一行的,readline()命令会扫描文件的每一个字节,直到找到一个\n位置,然后它停止读取文件,并返回之前的内容,被读取的文件会记录调用readline()后的读取位置,这样下一次被调用时就从那里开始读取了。
好啦,今天差不多就到这吧,所谓的贪多嚼不烂,我也是有点累了,今天写了很多,自己也想了很多,直到现在也分不清未来的出路,难过,难受,迷茫,我真的就差一点动力就能迈出那一步了,可是之后呢,迈出那一步之后,我会面对一个什么样的未来呢,这又让我难过,我希望一切会更好,至少比现在要好。。晚安,地球。
相关文章推荐
- java集群介绍
- BCB/Delphi中常用的VCL函数说明(文件函数)
- C++:复制构造函数的应用
- C++学习之Pair
- Jump Game II | Java最短代码实现
- BCB/Delphi中常用的VCL函数说明(字符串函数)
- Java Socket编程
- python多继承(新式类)一
- C#索引器
- c#类的属性和方法
- JAVA类加载机制
- FTP学习
- JavaWeb
- android studio 快捷键更改为和eclipse一样
- 关于“代码规范”,“Review”和“Check list”(续)
- 响应鼠标点击的代码实现了在单独线程中下载图片并在ImageView显示
- 使用MyBatis Generator自动创建代码
- c语言 圆周率代码
- 网店系统javashop发布其开源框架,遵循GPL协议
- PHP 中的命名空间