赞
踩
一些文章参考
https://www.zhihu.com/question/348263788
python官网
python入门指南
def basicStr(): print('I\'m ok.') print('I\'m learning\nPython.') print('\\\n\\') #\\就是\ \n换行 print('\\\t\\') #\t为制表符 print('''line1 ... line2 ... line3''') print('''line1 line2 line3''') print(r'''hello,\n world''') #r''不转义 print(True or False) print(True and False) print(not 1 > 2) print(10 / 3) #浮点数 print(10 // 3) #除数 print(10 % 3) #余数 print('Hello, %s' % 'world') print('Hi, %s, you have $%d.' % ('Michael', 1000000)) print('%2d-%02d' % (3, 1)) print('%.2f' % 3.1415926) r = 2.5 s = 3.14 * r ** 2 print(f'The radius {r} is {s:.2f}') list1 = ['Michael', 'Jack', ['asp', 'php'], 'Bob', 'Tracy'] print(list1[0]) print(list1[-1]) tuple1 = ('Michael', 'Bob', 'Tracy', ['A', 'B']) #['A', 'B']中可变,这是list tuple2 = ('Michael', 'Bob', 'Tracy') #初始化后,不可变的 print('one:%s index:%s' % (tuple1[0], tuple1[0][0])) s = set([1, 1, 2, 2, 3, 3]) print(s) a = 'abc' print(a.replace('a', 'A')) basicStr() input("basicStr:")
输出结果:
I'm ok. I'm learning Python. \ \ \ \ line1 ... line2 ... line3 line1 line2 line3 hello,\n world True False True 3.3333333333333335 3 1 Hello, world Hi, Michael, you have $1000000. 3-01 3.14 The radius 2.5 is 19.62 Michael Tracy one:Michael index:M {1, 2, 3} Abc
一般函数等
#一般的函数 def function1(): print(abs(-20)) print(max(2, 3, 1, -5)) print(int('123')) print(float('12.34')) print(str(1.23)) print(bool('')) print(bool(1)) function1() ####if、for循环 K=['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] def way2(n): r=[] if n >= len(K): pass else: for i in range(n): r.append(K[i]) return r print(way2(3)) print(way2(5)) print(way2(7)) ####while循环 def way1(m): L = [] n=1 while n<= m: L.append(n) n=n+2 return L print(way1(20)) input("way1:")
输出结果
20
3
123
12.34
1.23
False
True
['Michael', 'Sarah', 'Tracy']
[]
[]
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
函数示例
#nums为可变参数 如 (1,2,4) def calc(*nums): sum=0 for n in nums: sum=sum+n*n return sum print(calc(5,3)) print(calc(5,3,3)) def my_abs(x, y): if x >= 0: return x else: return y print('result:%s, %d' % (my_abs(-6,0),my_abs(-6,0))) import math def move(x, y, step, angle=0): nx = x + step * math.cos(angle) ny = y - step * math.sin(angle) return nx, ny x,y = move(100,100,60,math.pi/6) print(x,y) print(x) print(y) r = move(100,100,60,math.pi/6) print(r[0],r[1]) def power(x, n=2): s = 1 while n > 0: n = n - 1 s = s * x return s print(power(5,3)) def way4(): L = ['Bart', 'Lisa', 'Adam'] le = int(len(L)) i=0 while i < le: i = i + 1 if i % 2 == 0: continue print('Hello, %s!' % L[i-1]) def f1(a, b, c=0, *args, **kw): print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw) print(f1(1, 2, 3, 'a', 'b')) print(f1(1, 2, 3, 'a', 'b', j=99)) args = (1, 2, 3, 4) kw = {'d': 99, 'x': '#'} print(f1(*args, **kw))
输出结果
34
43
result:0, 0
151.96152422706632 70.0
151.96152422706632
70.0
151.96152422706632 70.0
125
a = 1 b = 2 c = 3 args = ('a', 'b') kw = {}
None
a = 1 b = 2 c = 3 args = ('a', 'b') kw = {'j': 99}
None
a = 1 b = 2 c = 3 args = (4,) kw = {'d': 99, 'x': '#'}
None
##### 高级特性-----切片 L1 = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] def way1(n): #取出前n个元素 r = [] for i in range(n): r.append(L1[i]) return r print(way1(3)) L = list(range(20)) print(L[0:3]) #取前3个元素 print(L[:3]) #取前3个元素 print(L[1:3]) #取[1,3)的元素 print(L[-2:]) #从倒数第2开始往后取元素 print(L[-2:-1]) #从倒数第2到倒数第1 print(L[-3:]) #取后3个元素 print(L[:10:2]) #前10个数,每2个取值 print(L[::5]) #所有数,每5个取一个 print(L[:]) #所有数 K = (0, 1, 2, 3, 4, 5) print(K[:3]) #取前3个元素 print(K[:1]) #取前1个元素 ##### 高级特性-----迭代 d = {'a': 1, 'b': 2, 'c': 3} def way5(): for key in d: print(key) for value in d.values(): print(value) for k, v in d.items(): print('k:%s,v:%s' % (k,v)) ##判断一个对象是可迭代对象 from collections.abc import Iterable def way6(): print(isinstance('abc', Iterable)) # str是否可迭代 True print(isinstance([1,2,3], Iterable)) #True print(isinstance(123, Iterable)) #整数不是可迭代 False ##Python内置的enumerate函数可以把一个list变成索引-元素对 def way7(): for i, value in enumerate(['A', 'B', 'C']): print(i, value) ##另一种for循环 def way8(): for x, y in [(1, 1), (2, 4), (3, 9)]: print(x, y) ##### 高级特性-----列表生成式 ##[1x1, 2x2, 3x3, ..., nxn] def way9(n): print([x * x for x in range(1, n)]) print([x * x for x in range(1, 11) if x % 2 == 0]) print([m + n for m in 'ABC' for n in 'XYZ']) d = {'x': 'A', 'y': 'B', 'z': 'C'} for k, v in d.items(): print(k, '=', v) print([k + '=' + v for k, v in d.items()]) s1 = ['Hello', 'World', 'IBM', 'Apple'] print([s.lower() for s in s1]) #取出元素后,在进行奇数、偶数不同处理 print([x if x % 2 == 0 else -x for x in range(1, 11)]) print(isinstance('abc', str)) ##### 高级特性-----生成器 #斐波拉契数列【generator函数】 def fib(max): n, a, b = 0, 0, 1 while n < max: yield b a, b = b, a + b n = n + 1 return 'done' ##遇到yield就中断,返回值,下次又继续执行 g = fib(6) #相当于每次的结果存储在g中 def fibTest(t): while True: try: x = next(t) print('fib t:', x) except StopIteration as e: print('Generator return value:', e.value) break print('fib g:', g) fibTest(fib(6)) #杨辉三角 def triangles(n): triangle = [[1], [1, 1]] for i in range(2, n): pre = triangle[i - 1] # 上一行 cul = [1] # 第一个元素,然后追加List for j in range(i - 1): cul.append(pre[j] + pre[j + 1]) cul.append(1) #最后一个元素 triangle.append(cul) return triangle print(triangles(8)) print(input('input:'))
输出结果是
['Michael', 'Sarah', 'Tracy'] [0, 1, 2] [0, 1, 2] [1, 2] [18, 19] [18] [17, 18, 19] [0, 2, 4, 6, 8] [0, 5, 10, 15] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] (0, 1, 2) (0,) fib g: <generator object fib at 0x000002390284C830> fib t: 1 fib t: 1 fib t: 2 fib t: 3 fib t: 5 fib t: 8 Generator return value: done [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1], [1, 6, 15, 20, 15, 6, 1], [1, 7, 21, 35, 35, 21, 7, 1]]
语法为:map(function, iterable, …)
function – 函数
iterable – 一个或多个序列
将function作用于iterable序列中的每一个元素,并将调用的结果返回
语法:reduce(function, iterable[, initializer])
用传给 reduce中的函数 function(二元函数,两个参数),先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,依次进行下去直到最后。
##### 函数式编程--高阶函数--map/reduce def map_func(x): res = x**2 return res a1 = map(map_func,[1,2,3]) print('a1:', a1) ### a1: <map object at 0x0000025FB86EB588> def map_func_2(x,y): res = x+y return res a2 = map(map_func_2, [1,2,3],[1,2,3]) print('a2:', a2) print('a2:', list(a2)) #### a2: [2, 4, 6] print(input("in:")) from functools import reduce def reduce_func1(x, y): return x+y r1 = reduce(reduce_func1,[1,2,3]) ##将第1,2两数进行reduce_func1结果,再与第3个数据操作 print('r1:', r1) print('r2:', reduce(lambda x, y: x+y, [1,2,3])) ###map和reduce编写一个str2float函数,把字符串转换成浮点数 ## 123.456. 以.进行切片为 123 456 # 123进行转换为[1,2,3] 456转换为[4,5,6] # 然后就是将list转换为int型组合 def str2float(s): def fn(x, y): return x*10+y n = s.index('.') s1 = list(map(int, [x for x in s[:n]])) s2 = list(map(int, [x for x in s[n+1:]])) return reduce(fn,s1)+(reduce(fn,s2)/10**len(s2))
例子:一个decorator,对需要记录时间的函数进行监控
import time def metric(fn): def measure_time(*args, **kwargs): start_time=time.time() result=fn(*args,**kwargs) end_time=time.time() print('%s executed in %s ms' % (fn.__name__, end_time - start_time)) return result return measure_time @metric def fast(x, y): time.sleep(0.0012) return x + y; @metric def slow(x, y, z): time.sleep(0.1234) return x * y * z; f = fast(11, 22) s = slow(11, 22, 33) print('f:', f) print('s:', s)
输出结果:
fast executed in 0.002238750457763672 ms
slow executed in 0.13584208488464355 ms
f: 33
s: 7986
1、reduce()函数: 迭代时,当前保存的结果作为下一次循环计算的初始值。
语法:
functools.reduce (f,iterable[,initializer])
f 是fuction的缩写,是一个函数。规定这个函数必须有两个参数
iterable 是可迭代的对象,tuple, list, dictionary, string等可迭代物,必须参数
initializer 初始值,可选参数(只能给function第一个参数设置初始值,不能给第二个参数设置初始值)
import functools, operator
re1 = functools.reduce(operator.add,[1,2,3,4,5])
re2 = functools.reduce(operator.add,[1,2,3,4,5],7)
print("re1:", re1) #运行结果:((((1+2)+3)+4)+5) = 15
print("re1:", re2) #运行结果:(((((7+1)+2)+3)+4)+5) = 22
2、partial()函数: 把一个函数的部分参数设置为默认值的方式返回一个新的可以调用的(callable)的partial 对象
语法:
**functools.partial( func, *args, keywords)
*args *args表示任何多个无名参数,它是一个tuple(元组)
* *keywords **keywords表示关键字参数,它是一个dict(字典 :键值对)
def function(a,b,c,d):
print(a,b,c,d)
#这是将1,2作为参数给function赋值前两个入参,后续fun1只需要关系后面两个参数即可
fun1 = functools.partial(function,1,2)
re3 = fun1(5,6) #输出结果:1 2 5 6
fun2 = functools.partial(function,c=1,d=2)
re4 = fun2(5,6) #输出结果: 5 6 1 2
fun3 = functools.partial(function,a=6,c=3)
re5 = fun3(b=5,d=6) #输出结果: 6 5 3 6
3、sorted()函数: 把一个可迭代对象进行排序,返回结果列表
语法:
sorted( iterable,*,key = None, reverse = False)
iterable 可迭代类型,例如字典、列表…
key = None 可迭代类型中某个属性,对给定元素的每一项进行排序
reverse = False 降序或升序
numbers = [1,6,4,-2,9] print(sorted(numbers)) #按数值自然排序 [-2, 1, 4, 6, 9] number_sorted = sorted(numbers, reverse=True) #按数值逆序排序 print(number_sorted) ##[9, 6, 4, 1, -2] number_sorted2 = sorted(numbers, key=abs) #按绝对值排序 print(number_sorted2) ##[1, -2, 4, 6, 9] number_sorted3 = sorted(numbers, key=abs, reverse=True) #按绝对值排序 print(number_sorted3) ##[9, 6, 4, -2, 1] str1 = ["Dog","Cat","Rabbit"] #首字母均是大写 str2 = ["Dog","cat","Rabbit"] #cat首字母是小写 str3 = ["Dog","cat","Rabbit"] #cat首字母是小写 ##对字符串进行排序 str1_sorted = sorted(str1) #按26字母表顺序排序 str2_sorted = sorted(str2) #按照Unicode数值来排序 str3_sorted = sorted(str3, key=str.lower) #按26字母表顺序排序 print(str1_sorted) ##['Cat','Dog','Rabbit'] print(str2_sorted) ##['Dog','Rabbit','cat'] print(str3_sorted) ##['Cat','Dog','Rabbit'] ##按字符串长度排序 str_1_sorted = sorted(str_1,key = len) #按字符串长度排序 print(str_1_sorted) ###['Dog','cat','Rabbit'] ##按元组的元素排序 tuple1 = [('Bob',75),('Adam',92),('Lisa',88)] tuple2 = [('Bob',75),('Adam',92),('Lisa',88)] tuple1_sorted = sorted(tuple1) #默认按第一个元素排序 tuple2_sorted = sorted(tuple2,key = lambda t:t[1]) #按元组的第二个元素排序 print(tuple1_sorted) ##[('Adam',92),('Bob',75),('Lisa',88)] print(tuple2_sorted) ##[('Bob',75),('Lisa',88),('Adam',92)]
class Student:
def __init__(self,name,score):
self.name = name
self.score = score
def print_score(self):
print('%s: %s' % (self.name,self.score))
##
bart = Student('ww',30)
bart.print_score()
print(bart.score) ##30
print(input("stop:"))
在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问
class Student:
def __init__(self,name,score):
self.name = name
self.__score = score
def print_score(self):
print('%s: %s' % (self.name,self.__score)) ##内部可以调用,但外部不可调用
bart = Student('ww',30)
bart.print_score()
print(bart.name)
print(bart.__score) ##会报错
基本写法
class Student(object):
def __init__(self, name, gender):
self.name = name
self.__gender = gender
def get_gender(self):
return self.__gender
def set_gender(self,gender):
self.__gender = gender
type()函数: 返回对应的Class类型。
isinstance()函数: 一个对象是否是某种类型。
dir()函数: 获得一个对象的所有属性和方法,它返回一个包含字符串的list,比如,获得一个str对象的所有属性和方法
如:
class Animal(object):
def run(self):
print('Animal is running...')
###### 继承和多态
class Dog(Animal):
def run(self):
print('Dog is running...')
def eat(self):
print('Eating meat...')
print(dir(Dog))
#得到结果是:
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'eat', 'run']
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。