Python学习:基本概念
Python学习:基本概念
一,python的特点:
1,python应用场景多;爬虫,网站,数据挖掘,可视化演示。
2,python运行速度慢,但如果CPU够强,这差距并不明显。
3,严格的缩进式编程
二,python输入
1,print 'hello world',‘Dr’ (中文:# -*- coding: utf-8 -*-申明)
2,raw_input('input:')
三,数据类型
1,类型显示:type() ,数值型和字符型都是不变量
2,转义:\n或r(不转义)
3,布尔类型:and,or,not
4,python 变量是动态变量即:变量所指向类型可变(a=1 a='str'),而Java是静态变量
5,常量
6,字符串编码:ASCLL,Unicode,UTF-8
ASCLL对应一个字节,Unicode对应两个字节,而UTF-8将英文字母被编码成1个字节,汉字通常是3个字节
7,字符串格式化输出 %d %f %s
'Hello, %s' % 'world'
8,集合
1,list用法: list=[1,2,3] (可变性)
2,tuple元组:t=(1,2,3) (因为tuple不可变:每个元素,指向永远不变,但指向的对象可变,所以代码更安全)
3,dict: d={'Bob':15,'John':14} 相当与map,key为不可变量,dict是用空间来换取时间的一种方法
4,set: set=([1,2,3])
也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
要创建一个set,需要提供一个list作为输入集合
9,语句
条件: if age>14: elif: else:
循环: for num in range(14): 表示(0到13之间的数)
10,函数
1,如果想定义一个什么事也不做的空函数,可以用pass语句,缺少了pass,代码运行就会有语法错误。
2,函数返回:return a 或return a,b,函数执行完毕也没有return语句时,自动return None
3,函数默认参数:def mypow(x,n=2) 调用pow(2) 即可
一是必选参数在前,默认参数在后,否则Python的解释器会报错;
二是:def enroll(name, gender, age=6, city='Beijing'): 调用:enroll('Bob', 'M', 7)或enroll('Adam', 'M', city='Tianjin')都可以
4,可变参数:参数用list或tuple,可变参数允许你传入0个或任意个参数
5,关键字参数:关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict
def person(name, age, **kw):
print 'name:', name, 'age:', age, 'other:', kw
>>> kw = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, **kw)
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
6,参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。
组合用例:
def person(name,age=3,*p,**kw):
print 'name',name,'age',age,'p=',p,'kw=',kw
>>> p=[1,2,3]
>>> kw={'city':'BJ','love':'dog'}
>>>person('Dr',age,*p,**kw)//注意TypeError: person() keywords must be strings kw的key值只允许value
7,递归函数
问题:递归层次过深容易出现栈溢出,解决递归调用栈溢出的方法是通过尾递归优化,事实上尾递归和循环的效果是一样的,所以,把循环看成是一种特殊的尾递归函数也是可以的。
尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况。
如下所示:
def fact(n):
return fact_iter(n, 1) def fact_iter(num, product):
if num == 1:
return product
return fact_iter(num - 1, num * product)
/*result
===> fact_iter(5, 1)
===> fact_iter(4, 5)
===> fact_iter(3, 20)
===> fact_iter(2, 60)
===> fact_iter(1, 120)
===> 120
*/
/*普通递归*/
===> fact(5)
===> 5 * fact(4)
===> 5 * (4 * fact(3))
===> 5 * (4 * (3 * fact(2)))
===> 5 * (4 * (3 * (2 * fact(1))))
===> 5 * (4 * (3 * (2 * 1)))
===> 5 * (4 * (3 * 2))
===> 5 * (4 * 6)
===> 5 * 24
===> 120
三:参考文献:
1,廖雪峰官方网址
Python学习:基本概念的更多相关文章
- python学习:基础概念
Python 包管理工具解惑 python packaging 一.困惑 作为一个 Python 初学者,我在包管理上感到相当疑惑(嗯,是困惑).主要表现在下面几个方面: 这几个包管理工具有什么不同? ...
- python学习笔记-python程序运行
小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...
- Python学习-day1
Mark一下,python学习. 今天一天已1.5x的速度看完了Alex老师的第一周的视频,先是4节鸡汤课,而且给了勺,讲述了python目前在世界的地位,发展趋势,以及未来的愿景. 最重要的还是写一 ...
- Python之路【第二十四篇】:Python学习路径及练手项目合集
Python学习路径及练手项目合集 Wayne Shi· 2 个月前 参照:https://zhuanlan.zhihu.com/p/23561159 更多文章欢迎关注专栏:学习编程. 本系列Py ...
- OpenCV之Python学习笔记
OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...
- Python学习的个人笔记(基础语法)
Python学习的个人笔记 题外话: 我是一个大二的计算机系的学生,这份python学习个人笔记是趁寒假这一周在慕课网,w3cschool,还有借鉴了一些博客,资料整理出来的,用于自己方便的时候查阅, ...
- Python学习之路-Day2-Python基础2
Python学习之路第二天 学习内容: 1.模块初识 2.pyc是什么 3.python数据类型 4.数据运算 5.bytes/str之别 6.列表 7.元组 8.字典 9.字符串常用操作 1.模块初 ...
- 【Python学习笔记之二】浅谈Python的yield用法
在上篇[Python学习笔记之一]Python关键字及其总结中我提到了yield,本篇文章我将会重点说明yield的用法 在介绍yield前有必要先说明下Python中的迭代器(iterator)和生 ...
- Python学习笔记(十一)
Python学习笔记(十一): 生成器,迭代器回顾 模块 作业-计算器 1. 生成器,迭代器回顾 1. 列表生成式:[x for x in range(10)] 2. 生成器 (generator o ...
随机推荐
- 作死上CODEVS,青铜题
题面:输入一列整数,输出它们的总和.最大值.最小值.并从大到小输出. 先上一波伪代码,认真地做一波数组排序题. #include<stdio.h> #include<math.h&g ...
- bzoj4800 [Ceoi2015]Ice Hockey World Championship
Description 有n个物品,m块钱,给定每个物品的价格,求买物品的方案数. Input 第一行两个数n,m代表物品数量及钱数 第二行n个数,代表每个物品的价格 n<=40,m<=1 ...
- [进程管理]Load和CPU利用率是如何算出来的
本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://www.penglixun.com/tech/system/how_to_ca ...
- 界面底部Tab实现
现在基本上大部分的手机APP都要实现底部Tab,底部实现Tab的实现方式有很多种,那么有没有好的实现方式呢? 今天我将使用一个开源插件来实现底部Tab 参考自zhangli_的博客:http://bl ...
- 阿里云CentOS-7.2安装mysql
我下载的阿里云的服务器系统centos7.2是纯内核版本,并没有其他的工具,所以这个系统是非常干净的.所以我就需要给系统安装一一些工具,来方便系统的管理与操作,我们上面讲到了关于服务器的yum的配置在 ...
- hdu2767强连通加缩点
https://vjudge.net/contest/156688#problem/B 题目说了一大堆,前面的没有用,就是让你判断要加几条边才能强连通,用到缩点的知识 二重循环,判断邻接表下一个点是不 ...
- 配置web.xml和glassfish容器实现javaEE表单验证
web.xml配置: <!-- 声明用于安全约束的角色 --> <security-role> <role-name>ReimUser</role-name& ...
- 产品经理学Python:条件控制
条件控制其实就是if...else...(如果...条件是成立的,就做...:反之,就做...)的使用,其基本结构是: 具体看下面这个例子: def account_login(): # 定义函数 p ...
- [.NET] 《Effective C#》快速笔记 - C# 高效编程要点补充
<Effective C#>快速笔记 - C# 高效编程要点补充 目录 四十五.尽量减少装箱拆箱 四十六.为应用程序创建专门的异常类 四十七.使用强异常安全保证 四十八.尽量使用安全的代码 ...
- mysql 中文出现?,设置utf8
windows系统下的mysql: 1.找到mysql的配置文件:文件名可能不是my.ini(如my-default.ini),修改成my.ini. 打开配置文件,并编辑如下:(若是没有[client ...