- 浏览: 317190 次
文章分类
最新评论
-
ZT71363387:
多谢,帮我解决了抄送人收不到邮件的问题
python smtplib -
dsjt:
pythonw.exe 运行后无反应。版本不匹配啊。
python+PyQT+Eric安装配置 -
dsjt:
xp 32位系统安装eric后,目录下没有 .bat文件是怎么 ...
python+PyQT+Eric安装配置
抽象
Table of Contents
1 懒惰即美德
- 例子:
1: #Fibonacci数列函数 2: def fibo(x): 3: if x < 2: 4: return; 5: result = [0, 1] 6: for i in range(x - 2): 7: result.append(result[-1] + result[-2]) 8: return result; 9: 10: #测试 11: myarray = fibo(10) 12: print(myarray) 13: input("Press enter!") 14: 15: #结果 16: >>> 17: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34] 18: Press enter! 19: >>> 20:
2 抽象和结构
- 说明:抽象可以节省很多工作,是计算机程序让人读懂的关键;
3 创建函数
- 说明:
- 函数是可以被调用的,它执行一些操作并返回一个值,可以使用内 建函数 callable 判断函数是否可以被调用;
- 使用 def 语句定义函数;
- return 语句用来返回值;
- 例子:
1: #没有导入math模块,用callable判断函数是否可用 2: >>> callable(math.sqrt) 3: Traceback (most recent call last): 4: File "<pyshell#9>", line 1, in <module> 5: callable(math.sqrt) 6: NameError: name 'math' is not defined 7: #导入math模块 8: >>> import math 9: >>> callable(math.sqrt) 10: True 11: >>> 12: 13: #创建函数 14: >>> def myfunc(myparam): 15: print("This is my func!") 16: return 'Finish' 17: 18: #调用函数 19: >>> myfunc('Test') 20: This is my func! 21: 'Finish' 22: >>> 23:
3.1 给函数创建文档(Documenting Function)
- 说明:在函数开头添加一个字符串,它会随函数一同保存,这个字符串被 称为文档字符串;
- 例子:
1: #定义函数,并在里面添加文档字符串(docstring) 2: >>> def TestDocstring(): 3: '这是一个文档字符串,它会随函数一同保存' 4: print('Hello, world!') 5: return 0 6: #调用函数 7: >>> TestDocstring() 8: Hello, world! 9: 0 10: #使用内置的help函数可以显示函数中的文档字符串 11: >>> help(TestDocstring) 12: Help on function TestDocstring in module __main__: 13: 14: TestDocstring() 15: 这是一个文档字符串,它会随函数一同保存 16: 17: >>> 18:
3.2 并非真正函数的函数
- 说明:有些函数只执行一些操作,不用向调用方返回值,这时函数定义时, 可以省略return语句;
- 例子:
1: #不含return语句的函数 2: >>> def myfunc(): 3: print("Hello") 4: 5: 6: >>> myfunc() 7: Hello 8: 9: #含return语句的函数 10: >>> def myfunc1(): 11: print("Hello") 12: return 13: 14: >>> myfunc1() 15: Hello 16: 17: >>> result = myfunc() 18: Hello 19: #result结果为空对象 20: >>> print(result) 21: None 22: >>> result = myfunc1() 23: Hello 24: #result结果为空对象 25: >>> print(result) 26: None 27: >>> 28:
4 参数魔法
4.1 值从哪里来
- 说明:
- 创建函数时应该保证在收到合法参数时,执行正确的操作,收到非 法参数时,执行明显的异常(一般通过断言(assert)或者异常 (exception)来实现);
- 形式参数(formal parameters):在函数定义中的参数;
- 实际参数(actual parameters):在调用时的参数;
- 例子:
1: #name为形式参数 2: >>> def hello(name): 3: print("Hello, %s!" % name ) 4: 5: 6: #'Bill'为实际参数 7: >>> hello('Bill') 8: Hello, Bill! 9: >>> 10:
4.2 能够改变参数吗
- 说明:在函数内为参数赋与新值不会改变外面任何变量的值;
- 注意:如果参数是列表,那么如果函数中修改了参数,也将修改原列表, 为了避免这种情况,可以使用分片来传递参数;
- 例子:
1: #函数不修改参数值 2: >>> def myfunc(x): 3: x=10 4: return 5: 6: >>> x = 5 7: >>> myfunc(x) 8: >>> x 9: 5 10: >>> 11: 12: #如果参数是列表,那么在函数中如果修改了参数,也会影响到调用的列表 13: >>> def editList(l): 14: l[0] = 'Test' 15: return 16: 17: >>> l = ['a', 'b', 'c'] 18: >>> l 19: ['a', 'b', 'c'] 20: >>> editList(l) 21: >>> l 22: ['Test', 'b', 'c'] 23: >>> 24: 25: #以分片的方式修改列表 26: >>> l 27: ['a', 'b', 'c'] 28: >>> def editList(l): 29: l[0] = 'Test' 30: print (l) 31: return 32: 33: >>> editList(l[:]) 34: ['Test', 'b', 'c'] 35: >>> l 36: ['a', 'b', 'c'] 37: >>>
4.3 关键字参数和默认值
- 说明:
- 关键字参数:在调用函数时,在实参中指定实参对应的形参,这种调用 中的实参称为关键字参数;
- 位置参数:在调用函数时,通过位置匹配实参和形参,这种调用中的 实参称为位置参数;
- 注意:
- 关键字参数可以在函数中给参数提供默认值;
- 位置参数和关键字参数可以联合使用,但是应该 避免 使用这种方 式;
- 例子:
1: #关键字参数 2: >>> def hello(greeting='Hello', name='world'): 3: print("%s, %s" % (greeting, name)) 4: return 5: 6: #调用时不提供默认值,则调用后,直接使用函数定义中的默认值 7: >>> hello() 8: Hello, world 9: 10: #没有指明形参名,则打印时按位置参数方式调用 11: >>> hello('Nice to meet you', 'Bill') 12: Nice to meet you, Bill 13: >>> hello('Bill', 'Hello') 14: Bill, Hello 15: 16: #使用关键字参数,调用时用关键字匹配,与位置无关 17: >>> hello(name='Bill', greeting='Nice to meet you') 18: Nice to meet you, Bill 19: >>> 20:
4.4 收集参数
- 说明:
- 星号+参数名:参数前的星号将所有值放在同一个 元组 中,可以说 是将这些值收集起来,然后使用;
- 两个星号:用于处理关键字参数,可以将关键字参数收集到同一个字 典;
- 注意:调用时如果不提供任何元素,则收集参数就是一个空元组或空字典;
- 例子:
1: #星号+参数,将参数收集到元组中 2: >>> def TestStar(x, *params): 3: print(x) 4: print(params) 5: return 6: 7: >>> TestStar(1, 2,3,4,5) 8: 1 9: (2, 3, 4, 5) 10: 11: #两个星号,将参数收集到字典中 12: >>> def TestDoubleStar(x, **params): 13: print(x) 14: print(params) 15: return 16: 17: >>> TestDoubleStar(x=1,y=2,z=3) 18: 1 19: {'y': 2, 'z': 3} 20: >>> 21:
4.5 函数收集逆过程
- 说明:将实际参数放入元组或者列表,再调用函数的过程;
- 注意:使用一个星号来传递元组,使用两个星号来传递字典;
- 例子:
1: #传递元组 2: >>> def myAdd(x, y): 3: return x+y 4: 5: >>> data=(1231, 2131) 6: >>> myAdd(*data) 7: 3362 8: >>> 9: 10: #传递字典 11: >>> def myHello(greeting, name): 12: print('%s, %s' % (greeting, name)) 13: return 14: 15: >>> data={'name':'Bill Gunn', 'greeting':'Hello'} 16: >>> myHello(**data) 17: Hello, Bill Gunn 18: >>> 19:
5 作用域
- 说明;在函数内声明的变量,都是局部变量,如果需要在函数内声明全局 变量,需要在声明前添加关键字 global
- 例子:
1: #局部变量 2: >>> def TestLocalParam(): 3: x = 10 4: return 5: 6: >>> x 7: Traceback (most recent call last): 8: File "<pyshell#4>", line 1, in <module> 9: x 10: NameError: name 'x' is not defined 11: 12: #全局变量 13: >>> y = 10 14: >>> def TestGlobalParam(): 15: global y 16: y = 100 17: return 18: >>> y 19: 10 20: #使用函数修改全局变量 21: >>> TestGlobalParam() 22: >>> y 23: 100 24: >>> 25:
6 递归
6.1 阶乘
- 例子:
1: >>> def factorial(n): 2: if n < 1: 3: return 0 4: elif n == 1: 5: return 1 6: else: 7: return factorial(n-1) * n 8: 9: 10: >>> x = factorial(2) 11: >>> x 12: 2 13: >>> factorial(3) 14: 6 15: >>> factorial(4) 16: 24 17: >>> for i in range(10): 18: print(factorial(i)) 19: 20: 21: 0 22: 1 23: 2 24: 6 25: 24 26: 120 27: 720 28: 5040 29: 40320 30: 362880 31: >>> 32:
6.2 幂
- 例子:
1: >>> def mypow(x, y): 2: 'y must be positive integer' 3: if y == 0: 4: return 1 5: else: 6: return x * mypow(x, y-1) 7: 8: >>> mypow(0, 10) 9: 0 10: >>> mypow(1, 10) 11: 1 12: >>> mypow(2, 10) 13: 1024 14: >>> mypow(2, 128) * 0.0002 15: 6.80564733841877e+34 16: >>> 17:
6.3 二元查找
- 例子:
1: >>> def binSearch(sequnce, number, lower, upper): 2: if lower == upper: 3: assert number == sequnce[upper] 4: return upper 5: middle = (lower + upper) // 2 6: if number > sequnce[middle]: 7: return binSearch(sequnce, number, middle+1, upper) 8: else: 9: return binSearch(sequnce, number, lower, middle) 10: 11: 12: >>> x 13: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 14: 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 15: 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 16: 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 17: 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] 18: >>> binSearch(x, 10, 0, 99) 19: 10 20: >>> binSearch(x, 11, 0, 99) 21: 11 22: >>> 23:
发表评论
-
lxml.etree
2017-06-21 10:48 618http://www.cnblogs.com/bluesc ... -
Python dictdiffer模块比较两个字典
2017-03-04 17:51 3554http://dictdiffer.readthedocs. ... -
python 判断一个对象是否可迭代
2017-01-23 09:44 651如何判断一个对象是可迭代对象呢?方法是通过collectio ... -
给python交互式命令行增加自动补全和命令历史
2017-01-22 10:09 683在用户目录下新建".pythonstartup& ... -
python 字典格式化
2017-01-16 13:57 408import pprint data = {'a': ... -
python最简洁的条件判断语句写法
2017-01-11 20:11 1168这篇文章主要介绍了Python返回真假值(True or ... -
python 格式化json
2016-12-19 20:07 564#!/usr/bin/env python # -*- ... -
python下载文件的三种方法
2016-11-18 10:21 402Python开发中时长遇到要下载文件的情况,最常用的方法就是 ... -
python 格式化字典字符串
2016-11-13 15:27 346version = {'a': 1, 'b': 2, 'c' ... -
python __fatal退出函数
2016-11-13 14:41 634def __fatal(exitcode, message) ... -
Python logging
2016-09-18 18:13 491#!/usr/bin/env python # -*- ... -
思考:如果list中既包含字符串,又包含整数,由于非字符串类型没有lower()方法,所以列表生成式会报错:
2016-06-24 18:30 2045>>> L = ['Hello', 'Wor ... -
去除重复字符串并保持原来顺序输出
2016-06-23 17:53 1199#!/usr/bin/env python # -*- c ... -
Python getpass 输入密码
2016-03-28 20:35 624Python有个自带的getpass模块: impor ... -
优秀Python学习资源收集汇总(强烈推荐)
2016-02-29 15:15 699Python是一种面向对象、直译式计算机程序设计语言。它的 ... -
python 模拟登录iteye博客
2016-01-07 11:32 638#!/usr/bin/python # -*- codi ... -
Python之路【目录】
2016-01-02 00:41 636http://www.cnblogs.com/wupeiq ... -
Python 正则 提取由start开始到end结束的行
2015-12-16 13:51 696import re s=open(r"bug.t ... -
Python文件替代fileinput模块
2015-12-12 12:05 1386Python文件替代fileinput模块 一,文件替代: ... -
linecache,想读某行周围的哪行都可以
2015-12-12 12:04 710import linecache x=linecache ...
相关推荐
Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip ...
Python深度学习实战——基于Pytorch全书电子教案完整版ppt整套教学课件最全教学教程.pptx
"Python 计算思维训练——SAR 图像处理" 在 Python 计算思维训练中,SAR 图像处理是一个重要的应用领域。SAR 图像处理指的是使用Python 工具处理合成孔径雷达(Synthetic Aperture Radar)图像,以提取有价值的信息...
Python学习笔记——运算符 运算符: 赋值运算符 算术运算符 关系运算符 逻辑运算符 位运算
Python学习笔记——输入input(),input()使用,两个练习。
Python是一种高级编程语言,以其简洁明了的语法和强大的功能...理解这些基础知识是深入学习Python的前提,也是成为熟练Python程序员的第一步。随着对这些概念的熟悉和实践,将能够编写出更复杂、功能丰富的Python程序。
Python入门教程和基础教程第4版PDF主要关注的是如何针对不同年龄段的人群设计和制作Python视频教程。在创建计算机Python教程时,理解目标受众的特点至关重要。 对于青少年群体,他们具有个性鲜明、变化多端和缺乏...
千锋python基础教程:1、第一个python程序与数据存储 '千锋python基础教程:2、print&input;与变量和运算符' 千锋python基础教程:3、字符串与循环中的while '千锋python基础教程:4、布尔&list;与条件循环语句与...
python 基础教程 第二版 高清 书签 中文: 本书包括Python程序设计的方方面面,首先从Python的安装开始,随后介绍了Python的基础知识和基本概念,包括列表、元组、字符串、字典以及各种语句。然后循序渐进地介绍了...
《Python期末大作业——采用Neo4j的基于协同过滤电影推荐系统》是一个综合性的项目,旨在教授学生如何利用Python编程语言、大数据处理技术以及Neo4j图数据库来构建一个电影推荐系统。该项目不仅包含了完整的源代码,...
Python入门基础教程全套.PPT,Python入门基础教程全套.PPT,Python入门基础教程全套.PPT,Python入门基础教程全套.PPT,Python入门基础教程全套.PPT,Python入门基础教程全套.PPT,Python入门基础教程全套.PPT,...
指向计算思维发展的初中信息技术Python语言教学设计——以“多分支结构条件语句”一课为例 本文总结了指向计算思维发展的初中信息技术Python语言教学设计,以“多分支结构条件语句”一课为例,通过教学设计的思路、...
Python 比较操作符详解 Python 中的比较操作符是用来检查两个值或对象是否相等的。Python 的比较操作符可以自动遍历数据结构,并从左到右递归地应用比较,要多深就走多深。过程中首次发现差值才停止。 1. 等值比较...
Python基础教程(代码详解).pdfPython基础教程(代码详解).pdfPython基础教程(代码详解).pdfPython基础教程(代码详解).pdfPython基础教程(代码详解).pdfPython基础教程(代码详解).pdfPython基础教程(代码...
2024最新版python中j_pythonj基础笔记2024最新版python中j_pythonj基础笔记2024最新版python中j_pythonj基础笔记2024最新版python中j_pythonj基础笔记2024最新版python中j_pythonj基础笔记2024最新版python中j_...
为什么用 Python 作为编程入门语言? 原因很简单。 每种语言都会有它的支持者和反对者。去 Google 一下“why python”,你会得到很多结果, 诸如应用范围广泛、开源、社区活跃、丰富的库、跨平台等等等等,...
python简明教程笔记.pdf
第1 章 快速上手:基础知识 1.1 交互式解释器 1.2 算法是什么 1.3 数和表达式 1.4 变量 1.5 语句 1.6 获取用户输入 1.7 函数 1.8 模块 1.8.1 cmath和复数 1.8.2 回到未来 1.9 保存并执行程序 1.9.1 从...
python基础教程自学笔记