博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python学习--最完整的基础知识大全
阅读量:6715 次
发布时间:2019-06-25

本文共 6384 字,大约阅读时间需要 21 分钟。

Python学习--最完整的基础知识大全

关于python的基础知识学习,网上有很多资料,今天我就把我收藏的整理一下分享给大家!

下面是我基础学习时的一点记录:

python3 循环语句

1. while

n=10sum = 0counter = 1while counter < n:    sum = sum + counter    counter += 1print("1到%d之和为:%d" %(n, sum))#while 循环使用 else 语句count = 0while count < 5:   print (count, " 小于 5")   count = count + 1else:   print (count, " 大于或等于 5")

2. for

#可以使range以指定数字开始并指定不同的增量(甚至可以是负数,有时这也叫做'步长')for i in range(0, 10, 3):    print(i)for i in range(-10, -100, -30):    print(i)a_list = ['google', 'baidu', 'ie', 'firefox', '360']for i in range(len(a_list)):    print(i, a_list[i])#使用range创建列表b_list = list(range(8))print(b_list)

3. break和continue

#使用break终止循环for letter in 'helloworld':    if letter == 'r':        break    print("当前字母为:", letter)#使用continue跳过循环for letter in 'helloworld':    if letter == 'l':        continue    print("当前字母为:", letter)

4. pass语句

#说明:pass就是一条空语句。在代码段中或定义函数的时候,如果没有内容,或者先不做任何处理,直接跳过,就可以使用pass。for letter in 'helloworld':    if letter == 'l':        pass        print("执行pass块")    print("当前字母为:", letter)

5. 使用enumerate函数进行遍历

c_list = [12, 34, 56, 78, 90]for i, j in enumerate(c_list):    print(i, j)

6. 小练习

循环练习
for i in range(1, 6):    for j in range(1, i+1):        print('*',end='')    print('\r')
9*9乘法表
for i in range(1, 10):    for j in range(1, i+1):        print("%d * %d = %d" %(j, i, i*j), end='\t')    print('\r')
冒泡排序
def paixu(d_list):    for i in range(0, len(d_list)):        for j in range(i+1, len(d_list)):            if d_list[i] >= d_list[j]:                tmp = d_list[i]                d_list[i] = d_list[j]                d_list[j] = tmp    print(d_list)li = [32, 23, 65, 32, 76, 79, 56, 89, 12]paixu(li)

Python3 迭代器与生成器

迭代器

迭代器是一个可以记住遍历的位置的对象。

迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

迭代器有两个基本的方法:iter() 和 next()。

import sysit = iter(c_list)print(c_list)print(next(it))for x in it:    print(x, end=' ')it1 = iter(c_list)while True:    try:        print(next(it1))    except StopIteration:        sys.exit()

生成器

在 Python 中,使用了 yield 的函数被称为生成器(generator)。

调用一个生成器函数,返回的是一个迭代器对象。
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。

生成器函数
def fibonacci(n):    a = 0;    b = 1;    counter = 0;    while True:        if (counter > n):            return        yield a        a, b = b, a + b        counter += 1#生成器函数返回一个迭代器fibo = fibonacci(10)while True:    try:        print(next(fibo), end=' ')    except:        sys.exit()

函数

函数传入不定长参数

#加了星号(*)的变量名会存放所有未命名的变量参数。如果在函数调用时没有指定参数,它就是一个空元组。我们也可以不向函数传递未命名的变量。def printinfo(arg1, *vartuple):    "打印任何传入的参数"    print("输出:")    print(arg1)    for var in vartuple:        print(var)    returnprintinfo(10)printinfo(10, 20, 30)

匿名函数

python 使用 lambda 来创建匿名函数。

所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

  • lambda 只是一个表达式,函数体比 def 简单很多。
  • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
  • lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

sum = lambda arg1, arg2: arg1 + arg2print(sum(10,20))

变量的作用域

Python中变量的作用域一共有4种,分别是:

  • L (Local) 局部作用域
  • E (Enclosing) 闭包函数外的函数中
  • G (Global) 全局作用域
  • B (Built-in) 内建作用域

以 L –> E –> G –>B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内建中找。

B = int(2.9)  # 内建作用域G = 0  # 全局作用域def outer():    E = 1  # 闭包函数外的函数中    def inner():        L = 2  # 局部作用域

一个完整的demo

import pickleimport osdatafile = 'C:\\Users\\root\\Desktop\\PyDemo\\person.data'line = '#########################################'message = '''#######################################*Welcome bookmark:                    **    press 1 to show list             **    press 2 to add pepole            **    press 3 to edit pepole           **    press 4 to delete pepole         **    press 5 to search pepole         **    press 6 to show menu             **    press 0 to quit                  *#######################################'''#打印菜单栏print(message)#创建一个人类,有姓名和电话号两个属性class Person(object):    def __init__(self, name, number):        self.name = name        self.number = number#获取数据def get_data(filename = datafile):    if os.path.exists(filename) and os.path.getsize(filename):        with open(filename, 'rb') as f:            return pickle.load(f)    return None#写入数据def set_data(name, number, filename = datafile):    personList = {} if get_data() == None else get_data()    with open(filename, 'wb') as f:        personList[name] = Person(name, number)        pickle.dump(personList, f)#保存字典格式的数据到文件def save_data(dictPerson, filename = datafile):    with open(filename, 'wb') as f:        pickle.dump(dictPerson, f)#显示所有联系人信息def show_all():    personList = get_data()    if personList:        for v in personList.values():            print(v.name, v.number)        print(line)    else:        print('空空如也,请添加联系人!')        print(line)#添加联系人def add_person(name, number):    set_data(name, number)    print('添加联系人成功!')    print(line)#更新联系人def edit_person(name, number):    personList = get_data()    if personList:        if name in personList.keys():            personList[name] = Person(name, number)            save_data(personList)            print('更改联系人信息成功!')        else:            print('查无此人', name, ',请重试!')        print(line)#删除联系人def del_person(neme):    personList = get_data()    if personList:        if name in personList:            del personList[name]            save_data(personList)            print('删除联系人成功!')        else:            print(name, '不存在!')    print(line)#查询联系人def find_person(name):    personList = get_data()    if personList:        if name in personList.keys():            print(personList.get(name).name, personList.get(name).number)        else:            print('查无此人!', name)    print(line)while True:    num = input('>>>')    if num == '1':        print('查看所有联系人:')        show_all()    elif num == '2':        print('添加联系人:')        name = input('请输入联系人姓名 >>')        number = input('输入联系人电话号 >>')        add_person(name, number)        show_all()    elif num == '3':        print('更新联系人:')        name = input('请输入联系人姓名 >>')        number = input('输入联系人电话号 >>')        edit_person(name, number)        show_all()    elif num == '4':        print('删除联系人:')        name = input('请输入联系人姓名 >>')        del_person(name)        show_all()    elif num == '5':        print('查找联系人:')        name = input('请输入联系人姓名 >>')        find_person(name)    elif num == '6':        print(message)    elif num == '0':        break    else:        print('输入错误,请重试!')

我的个人微信订阅号:【Java编程社区】 欢迎你的加入!

图片描述

转载地址:http://klelo.baihongyu.com/

你可能感兴趣的文章
几种线性时间排序
查看>>
08 django模型系统(一)
查看>>
我对 前端 Js 开发方式 架构方向 的 一些看法
查看>>
Linux shell 自启动脚本写法
查看>>
How Many Tables HDOJ
查看>>
DataTable转换成List
查看>>
身份证号码验证算法
查看>>
py实现ftp
查看>>
3、异步编程-JS种事件队列的优先级
查看>>
关于C语言判断文件尾问题的探讨
查看>>
poj1243(经典dp)
查看>>
svn仓库转为git仓库
查看>>
跳转到指定的控制器
查看>>
cocoapod升级版本
查看>>
在正式800修改代码
查看>>
AngularJs的UI组件ui-Bootstrap分享(十三)——Progressbar
查看>>
用前序遍历递归构造二叉树
查看>>
JavaScript jQuery bootstrap css ajax
查看>>
组合选择器
查看>>
Understanding Angular’s $apply() and $digest()
查看>>