python基础小结案例_Python范例总结

一、基础功能

1、操作符

and 拥有更高优先级,会先行运算。

优先级顺序为 NOT、AND、OR。

2、列表

1)列表拼接

l1 = [1,2,3]

l2= [4,5,6]#方法1#l1 = l1 + l2

#方法2#l1[len(l1):len(l1)] = l2

#方法3

l1.extend(l2)print(l1)

3、函数

1)范例1

def greetPerson(*name):print('Hello', name)

greetPerson('Runoob', 'Google')##结果为Hello ('Runoob', 'Google')

2)范例2

加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。

x =TruedefprintLine(text):print(text, 'Runoob')

printLine('Python')##Python Runoob

3)范例3

defFoo(x):if (x==1):return 1

else:return x+Foo(x-1)#n+n-1+1

print(Foo(100))##结果是5050

4、类

1)私有字段/方法

在Python中,属性和方法的访问权限只有两种:公开的和私有的。如果希望是私有的,在命名时可以用两个下划线作为开头。

Python并没有从语法上严格保证私有属性或方法的私密性,它只是给私有属性和方法换了一个名字来“妨碍”对它们的访问,事实上如果你知道更换名字的规则仍然可以访问到它们。

不建议将属性设置为私有的,因为这会导致子类无法访问。所以大多数Python程序员会遵循一种命名惯例就是让属性名以单下划线开头来表示属性是受保护的,本类之外的代码在访问这样的属性时应该要保持慎重。这种做法并不是语法上的规则,单下划线开头的属性和方法外界仍然是可以访问的,所以更多的时候它是一种暗示或隐喻。

classJustCounter:__secretCount = 0 #私有属性,前缀两个下划线

publicCount =0defcount(self):

self.__secretCount += 1 #类内部调用私有属性

self.publicCount += 1

print(self.__secretCount)def __print1(self): #私有方法,前缀两个下划线

print('This is a private method!')defprint2(self):

self.__print1() #类内部调用私有方法

counter=JustCounter()print(counter.publicCount)#print counter.__secretCount # 报错,实例不能访问私有属性

print(counter._JustCounter__secretCount) #可以通过( 对象名._类名__私有属性名 )访问私有属性

counter.count()#counter.__print1() # 报错,实例不能访问私有方法

counter._JustCounter__print1() # 可以通过( 对象名._类名__私有方法名 )访问私有方法

counter.print2()

二、进阶功能

1、函数

1)偏函数

importfunctoolsdeffunc(a1,a2):print(a1,a2)

new_func= functools.partial(func, 666) ##666 传给第一个参数

new_func(999)

##结果

666 999

2)__开头的函数有很多

当把面向对象中的所有__函数__实现时,对象做任何操作时,都会执行其中对应的方法

举例1__add__

class Foo(object):

def __init__(self, num):

self.num = num

def __add__(self, other):

data = self.num + other.num

return Foo(data)

obj1 = Foo(1)

obj2 = Foo(2)

v = obj1.num + obj2.num

print(v)

## 结果是3

3)链chain

将每个列表的函数(功能)拼接到一个大的列表中,依次执行

from itertools importchaindeff1(x):return x + 1func1_list= [f1,lambda x:x-1]deff2(x):return x + 10new_fun_list=chain([f2], func1_list)for func innew_fun_list:print(func)

列表也可以直接使用chain

from itertools importchain

l1= [11,22,33]

l2= [44,55,66]

new_list=chain(l1,l2)for item innew_list:print(item)

4)python命令行传参

使用sys.argv传参

sys模块是很常用的模块, 它封装了与python解释器相关的数据,例如sys.modules里面有已经加载了的所有模块信息,sys.path里面是PYTHONPATH的内容,而sys.argv则封装了传入的参数数据。

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import sys

gpus= sys.argv[1]

#gpus= [int(gpus.split(','))]

batch_size= sys.argv[2]

print(gpus, type(gpus))

print(batch_size, type(batch_size))

执行python argv_test.py 1,0,2 10

使用argparse传参

#!/usr/bin/python

#-*- coding: UTF-8 -*-import argparse

parser= argparse.ArgumentParser(description='manual to this script')

parser.add_argument('--gpus', type=str, default =None)

parser.add_argument('--batch-size', type=int, default=32)

args=parser.parse_args()

print(args.gpus, type(args.gpus))

print(args.batch_size, type(args.batch_size))

执行:python argv_test.py --gpus=0,1,2 --batch-size=20

2、类

1)继承字典

classMyDict(dict):def __init__(self, *args, **kwargs):

super(MyDict,self).__init__(*args, **kwargs)

self['modify'] =True

obj=MyDict()print(obj)

继承字典

2)打开/关闭实现:with方法

classSQLHelper(object):defopen(self):pass

deffetch(self, sql):pass

defclose(self):pass

### 方法1#obj = SQLHelper()#obj.open()#obj.fetch('selcet * from table1')#obj.close()

### 方法二

with SQLHelper() as obj: #自动调用类中的__enter__方法,obj就是__enter__返回值

obj.fetch('selcet * from table1')#当执行完毕后,自动调用类__exit__方法

3、web框架的本质

1)werkzeug

from werkzeug.wrappers import Request, Response

@Request.application

def hello(request):

return Response('Hello World!')

if __name__ == '__main__':

from werkzeug.serving import run_simple

run_simple('127.0.0.1', 40000, hello)

2)wsgi

WSGI(Web Server Gateway Interface)是一种规范,它定义了使用python编写的web app与web server之间接口格式,实现web app与web server间的解耦。

python标准库提供的独立WSGI服务器称为wsgiref。

from wsgiref.simple_server importmake_serverdefRunServer(environ, start_response):

start_response('200 OK', [('Content-Type', 'text/html')])return [bytes('

Hello, web!

', encoding='utf-8'), ]if __name__ == '__main__':

httpd= make_server('', 8000, RunServer)print("Serving HTTP on port 8000...")

httpd.serve_forever()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值