python 基础

1、语言特性

  • pathon是一个解释型语言:一说解释型语言就会想到运行速度会慢。解释型语言:实在运行的时候翻译成机器语言,编译语言:通过编译器直接成机器语言。java属于解释型语言,java编译后只是生成字节码文件,字节码文件通过jvm翻译成机器语言。解释型语言可以跨平台因为有解释器。
  • 面向对象:可以创建类和对象
  • 动态数据类型:x=1;x=2;会申请俩个内存单元,内存单元中的数据内容是不变的,Python变量的类型是根据它所指向的内存单元中的数据类型决定的,因此不需要声明,指向什么类型,就是什么类型。c语言中 int x=1;x=2;只会开辟一个内存单元且类型必须是int。
  • 适合场景:python是用c写的。可以很方便地嵌入/被嵌入: C/C++/JAVA/shell..等开发语言       

       为其他应用提供脚本接口、数据分析、网络采集数据、web开发

2、数据类型

  • Number(数字) int、float、bool、complex(复数)  不可变对象
  • String(字符串) 不可变对象
  • List(列表) 可变
  • Tuple(元组) 不可变对象
  • Set(集合) 可变
  • Dictionary(字典) 可变

    number 类型重新赋值会新开辟一个存储单元

    string 类型  字符串不能改变 str = “bit” str[0] = "a" 报错

    list 类型 列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表。可以使用+操作符进行拼接。元素可变                 listall =[1,"b",["c","d"]]  listall[0] = 2 这样ok。list卸载中括号

    tuple 元组跟list一样 元组元素不能修改 元组写在小括号里

    set 无序不重复

    dictionary 相当于map

    python内置数据类型可以进行数据类型转换

3、迭代器

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

import sys # 引入 sys 模块

list=[1,2,3,4] it = iter(list) # 创建迭代器对象

while True:

    try: print (next(it))

    except StopIteration: sys.exit()

生成器mark

import sys
def fibonacci():# 生成器函数 - 斐波那契
    a,b = 0,1
    while True:
        if(b > 20):
            return
        a,b = b,a+b
        yield a,b # yield 函数返回a,b
f = fibonacci()# f 是一个迭代器,由生成器返回生成
while True:
    try:
        print(next(f))
    except StopIteration:
        sys.exit()

Python的yield不但可以返回值,它还可以接收调用者发出的参数

 

  4、函数

        在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象

       strings, tuples, 和 numbers 属于值传递 传值后数值不改变(重新在内存中开辟了存储空间类似javaString)

        list,dict 属于引用传递 

        def notChangeNumbers(a):

            a = 10

        b = 2

        notChangeNumbers(b)

        print(b)

       ################################

        def changeList(list):

            list[1] = 'a'  

        mylist = ['b',12]

        changeList(mylist)

        print(mylist)

       

    以下是调用函数时可使用的正式参数类型:

  • 必需参数
  • 关键字参数
  • 默认参数
  • 不定长参数

   作用域范围

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

Python 中只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域,(只要变量有了作用域内属性了,访问该变量就得遵循规则)

其它的代码块(如 if/elif/else/、try/except、for/while等)是不会引入新的作用域的,也就是说这些语句内定义的变量,外部也可以访问。

total = 0 # 这是一个全局变量

# 可写函数说明

def sum( arg1, arg2 ): #返回2个参数的和."

    total = arg1 + arg2 # total在这里是局部变量. 跟全局变量同名但在局部范围内重新申请的引用

    print ("函数内是局部变量 : ", total) return total #调用sum函数

sum( 10, 20 ) #30

print ("函数外是全局变量 : ", total) #0

当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了。

num = 1

def fun1():

    global num # 需要使用 global 关键字声明 意思就是使用全部变量声明的num

    print(num)

    num = 123

    print(num)

fun1() #1 123

print(num) #123

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值