python基础知识——基本语法

python基础知识——基本语法

在python基础知识这个系列中,准备罗列出我学习python的一些基础知识,包括:

  1. 基本语法
  2. 控制语句
  3. 内置数据结构
  4. 模块和函数
  5. 字符串
  6. 文件处理
  7. 面向对象
  8. 异常处理 以前写机器学习算法喜欢使用 Matlab 语言,接触 python 后,觉得 python 有很多地方还是比 Matlab 方便点,各有各的优势吧,在公司还是使用 python 较多,这里会罗列出一些 python 的基础知识。

一、编码规则

1、命名规则

变量名通常是由字母和下划线组成,包名,模块名通常是由小写字母组成。

类名的首字母用大写,其他字母用小写;对象名用小写字母;类的私有变量、私有方法以两个下划线作为前缀。

class Person:#定义一个Person类
	__name = ''#定义一个私有变量
	__age = ''#定义一个私有变量

	def __init__ (self, name, age):
		self.__name = name
		self.__age = age

	def getName (self):
		return self.__name
	
	def getAge (self):
		return self.__age


函数名通常采用小写字母。


2、代码缩进和冒号

在python中,代码缩进和冒号都是一种语法,在Java,C/C++中有{}语法,在python中则是采用的缩进和冒号。

如在Java中实现如下的判断:

if (x < 10)
{
	y = x + 1;
}else{
	y = x * 2;
}


则在 python 中的写法为:

if x < 10:#冒号
	y = x + 1#缩进
else:
	y = y * 2


3、模块的导入

模块是指类或者函数的集合。与Java中的import类似,在python中有两种导入方式:

  1. import ...
  2. from ... import ... 如要需要使用 random 模块中的 rangrange 函数。则有以下两种方式:

from ...

import random

num = random.randrange(1,9)#使用randrange函数
print num


from ... import ...

from random import randrange

num = randrange(1,9)#使用randrange函数
print num


注:这两种方式的区别, from ... 导入的是整个模块,而 import ...import ... 导入的只是部分内容,而且还创建了导入对象的引用,可以直接使用。在 import ... 模式中为模块创建别名,则使用 as ,如

import random as rd#为random创建别名rd

num = rd.randrange(1,9)#使用randrange函数
print num


4、注释

在python中注释使用的是#,#号后面为注释的内容,如上面的例子。

这里还要注意一下其他几种特殊的注释

  1. 中文注释:#coding:UTF-8
  2. 跨平台注释:#! /usr/bin/python

5、语句分隔

python中不必使用;分隔,但是一行写多条语句时要使用;分隔。

x = 1; y = 2; print x + y


6、变量和常量

变量名由字母、数字或者下划线组成,其中,首字符必须是字母或者下划线。

注意全局变量的定义和使用:

# 在文件的开始处定义全局变量
_a = 1#全局变量,加下划线以示区别
_b = 2

def add():
        global _a
        _a = 3
        return _a + _b


要使用 global 关键字。

在python中没有直接定义常量的关键字。

7、数据类型

主要的数据类型有:数字、字符串、元祖、列表和字典。

数字直接定义

i = 1


查看i的地址:

i = 1

print id(i)#查看i的地址


 查看变量的类型

i = 1

j = 1.

print type(i)
print type(j)


<type 'int'>
<type 'float'>


8、运算符

算术运算符算术表达式说       明
+x + y加法
-x - y减法
*x * y乘法
/x / y除法
%x % y求模
**x ** y求幂



注:1/2要进行浮点运算,需要导入 division 模块

from __future__ import division


关系运算符

关系运算符关系表达式说      明
<x < y小于
>x > y大于
<=x <= y小于等于
>=x >= y大于等于
==x == y等于
!=或<>x != y或x<>y不等于


逻辑运算符

逻辑运算符逻辑表达式
andx and y
orx or y
notnot x



 
 

Read more

【算法面试宝典】十大经典排序算法

【算法面试宝典】十大经典排序算法

目录 1 排序算法的分类 排序是将一组无序的数字元素,经过重新排列后形成的一组有序的数字元素,可以是升序也可以是降序。排序算法是对数字元素排列的过程中经过的一些列运算。根据是否需要比对,可以把排序算法分为 比较类排序算法 和 非比较类排序算法。 * 比较类排序算法:通过比较来确定元素之间的相对顺序。比较类排序算法的时间复杂度不能突破 O(NlogN),所以也成为非线性时间比较类排序。 * 非比较类排序算法:不通过比较来确定元素之间的相对顺序。非比较类排序算法可以突破比较类排序算法时间复杂度的下界,以线性时间运行,因此也称为线性时间非比较类排序。 常见的十大排序算法归类如下所示: 我们常用的冒泡排序、快速排序、插入排序、希尔排序、选择排序、堆排序、归并排序都属于比较类排序算法,因为要通过比较来判断元素的顺序。技术排序、桶排序、基数排序都属于非比较类排序算法。下面我们一起来拆解一下这十种排序算法。 2 十大排序算法详解 2.1 冒泡排序 2.3.1 解题思路 原理:比较两个相邻的元素,将大的元素交换到右边。 思路:依次比较两个相邻的元素,

By Ne0inhk
【支付架构】支付营销 - https://zeeklog.com会员有礼

【支付架构】支付营销 - https://zeeklog.com会员有礼

目录 1 业务简介 1.1 微信提供的支付营销能力 微信支付针对支付流量提供了多种营销能力,例如支付后发商家券、支付后曝光小程序、支付后曝光公众号、支付会员有礼等,微信支付营销能力如下图所示: 本篇以支付后发商家券为例来介绍微信支付营销能力。 1.2 活动-商家券-品牌关系 活动可以理解为商家券的载体,创建商家券需要有可用的子商户号,创建活动会指定使用哪些子商户号支付的交易可以展示领取商家券的入口。商家券-活动-子商户号 关联关系如下图所示: 创建活动会上送曝光商家券的子商户号列表,支付的时候使用在列表中的子商户号才会曝光商家券,子商户号列表中的子商户号必须是在同一品牌下的,如果没有做统一品牌认证只会曝光创建商家券的那个子商户号的交易。基于有赞现在子商户号的形态,单店会有多个子商户号,连锁场景总店也会有多个子商户号,独立认证的门店也会有多个子商户号,做支付交易的时候每个子商户号都有可能北路由到,为了保证商家券有效曝光,需要把这些子商户号维护在同一品牌下。保证无论使用哪个子商户号,创建的商家券都会被曝光。 所以品牌认证解决了两个问题: 1)同一个店铺有多个子商户号可以

By Ne0inhk
【算法面试宝典】字符串转换整数 - LeetCode8

【算法面试宝典】字符串转换整数 - LeetCode8

1 算法描述 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。 函数 myAtoi(string s) 的算法如下: 读入字符串并丢弃无用的前导空格 检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。 读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。 将前面步骤读入的这些数字转换为整数(即,"123" -> 123, "0032" -> 32)。如果没有读入数字,则整数为 0

By Ne0inhk