编程学习第七天,定义函数

好的,编程学习来到了第七天,按惯例还是想先啰嗦几句的

首先我已经买了伍佰的票,五月七号太原山西省体育中心体育馆,各种火车票、旅店全都订好了,就等着五月放假啦。然后我最近这几天有点心神不宁,为什么呢,因为昨天早上,也就是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()后的读取位置,这样下一次被调用时就从那里开始读取了。



好啦,今天差不多就到这吧,所谓的贪多嚼不烂,我也是有点累了,今天写了很多,自己也想了很多,直到现在也分不清未来的出路,难过,难受,迷茫,我真的就差一点动力就能迈出那一步了,可是之后呢,迈出那一步之后,我会面对一个什么样的未来呢,这又让我难过,我希望一切会更好,至少比现在要好。。晚安,地球。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值