您好,欢迎光临本网站![请登录][注册会员]  
文件名称: 实用Python教程——Easy Python精编版.pdf
  所属分类: Python
  开发工具:
  文件大小: 1mb
  下载次数: 0
  上传时间: 2019-10-08
  提 供 者: u0138*****
 详细说明:自己原创的Python教程,求捧场啦~ 作者:utmhikari 博客原文:https://utmhikari.github.io/categories/Easy-Python/ 语雀:https://www.yuque.com/hikari-zy5c0/easy-python 源代码:https://github.com/utmhikari/Easy_Python第一话: HelloWorld——输入、输出与函数 前言 原文地址 Helloworld,是代码世界的入口。当我们采用 Python语言打下 print('e11 oworld')的那一刻,是 否想过 print这个函数,到底表示什么呢?到底能怎么用呢?再宏观地看,函数,它的作用体现在哪里呢? 在第一话,我们可以了解到以下的知识 函数与过程( function& process 输入&参数&关键字/无关键字参数( input, arguments,*args&** kwargs) 输出&返回( output& return) Helloworld 学程序的第一行代码,大概都是 Hello world吧! print(' Hello World! 然后命令行里,就会输出 Hello world 那如果要打出1行100个 Hello world的话,该怎么办呢? 如果这样的话 for i in range(100): print(' Hello Wor ld' 试试看,会打出100行 Helloworld,不符合我们的需求 这个时候,该怎么办? 输入与输出 程序本质就是:输入->函数( function)->输出。输入的 raw data,经由一个叫函数的东西处理,就能 输出我们想要的数据 如果一个函数,没有输入输岀,也没关系。这样,函数就单纯是一个数据处理过程而已了。 在先前的 Helloworld,就似乎是这么一个结构 ·输入: Hello world 函数: print ·输出:命令行中打出Hel| lo World 所以,咱们可以从函数入手:可不可以定制一下 print,让咱们的 Hello world能够打出来不换行呢? 看一看 print这个函数( function)的源码: def print(self args, sep=', end='\n', file=None): 可以看到, print函数有个end=n的参数。顾名思义,每次pint一下,输出的字符串结尾都有一 个"n'。"\n'是换行符,那么就说明,单纯的 print100下,就会出100行 Helloworld嘞 因此,要解决咱们的需求也很简单,指定end为不换行,覆盖掉默认参数就好了~ for i in range (100) print(' hello World', end=';') 试试看吧~ 函数 函数, function,就像活字印刷的活字跟流水线上的机械处理器一样,是可以复用的处理过程,是通用的 功能。 函数的输入叫做参数( arguments,args);函数的输出可称作返回( return)。 print就是一个最典型的函数,我们写代码时常常 print数据出来调试。 print函数,就是这么实用。 现在让我们再次回顾一下 print的函数怎么定义的(def),这回,咱们把注释也给打出来 def print(self * args, sep=l, end='in', file=None) print(value,.., sep=', end='\n', file=sys. stdout, flush=False) Prints the values to a stream, or to sys. stdout by default Optional keyword arguments: file: a file-like object (stream)i defaults to the current sys. stdout sep: string inserted between values, default a space en d string appended after the last value, default a newline fLush: whether to forcibly flush the stream pass 参数 我们可以看到, print函数中,规定了这么些参数:*args,Sep,end,file 首先咱们来看第一个参数——*args。顾名思义,就是一堆参数( arguments)的称呼。参数开头为单星 号*,就代表这是一堆无关键字参数,就叫“无名参数”好啦 而像sep=xXX,end=XX之类的,都是参数名=参数值的结构,它们就叫——关键字参数( keyword arguments, kwargs),如果要表示一堆关键字参数,我们可以用:** kwargs 说了这么些,不如咱们来试试输入:我爱你 print( Wo,'Ai,Ni) 输入了三个无名参数,结果是 Wo Ai Ni 可以看到,三个无名参数都被打出来了,都被空格分隔。这个时候,我们就知道sep参数( separator)的 作用了。所以,让我爱你不分隔的方法是 print( Wo,A Ni I sep='t WoAiNi 最后一个fie参数,指定了我们在哪里 print出结果。默认值是sys. stdout,标准输岀流,咱们在cmd小黑 框里常看见的那些白字就是里边出来的啦。 不如,咱们试试把 WOAIN打进文件里? #默认file=sys, stdout,系统标准输岀流 #因此要自定义fiLe,则应当要赋予同类型的参数 file应该指定成一个输出流,类似一个数据写入通道 # py thon内置了open(文件名',w')的方法,可以创造一个文件的写入流 #其中"w代表 write,即写入模式 #可不能单纯fie=" Woald.txt'喔,怎么能赋一个字符串上去惹 print('wo,Ai,Ni, sep=', file=open( woaini. txt,'w) 打开 python文件同目录下,是不是多了—个 woainl. txt啦~快去瞧瞧吧! 返回 说到这么多, print的返回值,真的是上面所说的"命令行中打出 Hello world"嘛 当然不是拉== 我们其实可以用 print打一下 print的返回值,了解一下: a= print( woaini print(a) 结果是 Woald None 在 python里,None是一个抽象的符号,是 python内置的关键字(不是函数的关键字!),代表无,没有 数据。 也就是说, print,返回了None so,命令行的输出算什么呢? 我们再拿个例子 def func(x, y) print( woaini) return x+ y a,b=1,1 print(func(a, b) 打出来 woald 可以看到,最下边的 print,要打出函数func(a,b)的结果,因此先执行func。在执行func的期间,打出了 aini。然后才返回了x+y的结果。之后,才打出来1+1的结果,等于2 可以看到,我们要根据 return才知道函数返回什么,其它部分的输出都只是函数过程的副产物。没有 return,就默认返回None。 因此整个 print的过程,我们可以总结为 ·参数:自定义参数(*args,sep之类)、 print的默认参数 ·函数: print ·过程:打出 Hello world到标准输出流中,使得我们在命令行看到 返回:None 总结 函数无处不在,不仅是 print,就连你执行的 python脚本,本身也可以当做一个函数。 我们建一个文件:1.py,里面内容为 #导入内置的“系统功能〃模块:syS Import sys # print出执行1.py的参数 print (sys. argv) 然后,cmd命令行里进到1.py目录下,输入 python1.py123 abc gwer gogo ain看看结果吧 通过函数,我们可以把一个大的程序进行过程解耦,分解之为小的功能模块。每一个模块都有相应的输入 与输出,这样就把整一个程序串起来了。 至于输入、输岀与函数的底层,其实是个超级大坑,不是三言两语能够说清楚的。有兴趣的话,就谷歌一 番吧~ 第二话:映射——输入、输出与函数的纽带 前言 原文地址 映射,代表了输入与输出的关系,而函数则是映射的实现。在我们日常 coding中,如果能用映射的方式表 示一段程序,还能进一步增强代码的可读性 在第二话,我们会了解到以下的知识 ·映射( mappIng) ·字典及其映射实现(dict&hash 函数式编程& python示例( functional programming with its example 从dict开始说起 学 python的时候,我们一定会接触到dict(字典)这个数据结构。 dict结构展示了数据间(key与vaue)一一对应的关系,key作为一个查询索引,是不允许有重复的,而不 同key所对应的 value,则允许重复值的存在。 比如说,我们定义一群boys&gils,打出整个dict,再打出 girls有哪些,可以这样操作 import print d= dicto d['girU"]=["迪丽热巴',"王鸥',鬼鬼'] d["boy"']=['大碗宽面" #用 print, print函数打印数据结构,使得其排版更加 pretty print print(d, indent=2) #单用 print, format,可以返回一个排版过后的字符串,打印出来要额外 print操作~ print('Girls are: s% pprint pformat(d[' girl) 打出来的效果是 {"boy":["大碗宽面"],‘girL":["迪丽热巴',"王鸥',‘鬼鬼']} Girls are:['迪丽热巴',王鸥',"鬼鬼 我们可以很直观地看到这种对应关系 映射 像dict数据结构给我们展现的一样,数据间的对应关系,我们可以统称为:映射( Mapping) 如同第一话所说,程序的本质即为输入->函数->输出。输入和翰出,就是一种映射关系,而实现这种映射 的规则,就是函数。在dict里面,实现映射的函数,可以简化如下 def get value(key) memory address of value hash (key return get data from address memory address of value) 为了让我们便捷地从一个key访问到对应的 value,dic不可能把所有的key都过一谝找,那样费时费力。 取而代之,dict可以直接通过一种算法函数,称之为hash,就可以把key计算(映射)为一个数值,即 value的内存地址。我们通过这个内存地址,就可以取出对应的 value数据了,非常简单粗暴。 数据处理小需求 现在,让我们看这样一个需求。我们的输入是 input_List=[11,2,12,15,5,10,7,14,6,9,1,3,13,8,4] 也就是1~15的乱序。现在我们想输出这样的结果 如果大于10,输出字符串——这个数字大于10 如果小于等于10,输出字符串——这个数字小于等于10 被3整除的奇数不录入 这个需求并不难,我们可以轻易地打出以下的代码 output list =[ for i in input_List: ii%2==00ri%3!=0 If 1 >10. output_1ist. append("%d:大于10!%i) else: output_List. append("%d:小于等于10!'%i) 打出来的结果是 11:大于10! 2:小于等于10 12:大于10! 5:小于等于10! 10:小于等于10! 7:小于等于10! 14:大于10! 6:小于等于10! 1:小于等于10! 13:大于10! 8:小于等于10 4:小于等于10! 但是这段代码,层次清晰吗?如果代码逻辑变复杂了,会不会造成if-else的杂糅呢? 针对于此,我们看看另外一个方案 output= map( Lambda×:"%d:大于10!1%×ifx>10eLse%d:小于等于10!%×, filter( Lambda x: x%2==0 or x%3=0 sorted(input_list) 打出来这个结果 1:小于等于10! 2:小于等于10 4:小于等于10 5:小于等于10 6:小于等于10! 7:小于等于10! 8:小于等于10 10:小于等于10! 11:大于10! 12:大于10! 13:大于10! 14:大于10! 我们把需求的毎一步通过函数块的方式隔离出来,而后进行嵌套。这样,代码的层次就更加清晰了。 分解过程,持续映射
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 输入关键字,在本站1000多万海量源码库中尽情搜索: