一、 Python概述、变量

一、        Python概述

1、python是一门面向对象,解释型的脚本语言。语法简洁,编写效率高,但是执行(底层运行)效率低(总的来说解释语言执行效率低于编译语言)。

注意:本博客所有的代码都是按照Python3的标准创建的。

2、主要的语言特点是:任何的语句可以独立存在。并且代码块是以(:)开始的,注意每个语句的缩进空格(缩进格式决定语句的包含关系和执行顺序),在python里面缩进空格相当于java里面的“{ }”,并且没有一个明确的规定说要求几个空格,一般如果本句被上一句包含或者是上个语句的子句时,本句的会距上句缩进4个空格或者一个tab键(格式如下)

以下代码将会执行错误:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:test.py

 if True:
    print "Answer"
    print "True"
else:
    print "Answer"
    # 没有严格缩进,在执行时会报错
  print "False"

执行以上代码,会出现如下错误提醒:

$ python test.py
  File "test.py", line 5
    if True:
    ^
IndentationError: unexpected indent

在 Python 的代码块中必须使用相同数目的行首缩进空格数。

3、python的基础语法与java,shell脚本都有很多相似之处,可以参照这两种语言进行学习。

二、python文件的注释,声明,

1.python文件的首句声明和shell文件的声明相似,"#!"解释器路径

#!/usr/bin/python

2.注释

2.1单行注释,以”#“开头,注意:在python里引号也是成对存在的

# 单行注释、python3的输出语句,字符串单引号括起来
print(‘hello python!‘)
# 单行注释、python3的输出语句,字符串双引号括起来
print("hello python!")

2.2多行注释,用三个单引号(‘‘‘  ‘‘‘)或者双引号("""  """)括起来,注意:引号要成对存在

"""
python里面 类的构造方法能不能用关键字传参,
在python里面不能有++,--,但是在java中可以,shell里面用let var_name ++
这是以回车结尾
"""
print(‘人生苦短,好好学习python!‘, end=‘\n‘)
‘‘‘
这是python3的输出函数的基本用法
 print(self, *args, sep=‘ ‘, end=‘\n‘, file=None)
 可以改变里面的任意参数,end表示输出后以什么结尾
 *args:表示不定长参数,后面会详细介绍

‘‘‘
print(‘人生苦短,好好学习python!‘, end=‘^_^‘)
print(‘人生苦短,好好学习python!‘, end=‘^_^‘)

输出结果:

人生苦短,好好学习python!
人生苦短,好好学习python!^_^人生苦短,好好学习python!^_^

注意:在书写字符串时会受到一些特殊字符(‘," 等)的影响,用三个单引号或者双引号不失为一个好的解决方法。同时换行输出也是。

下面会报错:

print(‘let‘t go‘)

下面会正常输出:

print(‘‘‘let‘s go!‘‘‘)

下面会报错:

print(‘---------------‘)
print(‘
      春眠不觉晓
        处处蚊子咬
            梦来春雨声
            夜里明月笑
‘)

下面是换行输出:

#输出时空格换行等都不会忽略,就连空行和空格都
print(‘---------------‘)
print(‘‘‘
      春眠不觉晓
        处处蚊子咬
            梦来春雨声
            夜里明月笑        

‘‘‘)
print(‘---------------‘)

结果如下:
---------------

春眠不觉晓
        处处蚊子咬
            梦来春雨声
            夜里明月笑

---------------

Process finished with exit code 0

3.空格

函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。

空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。

记住:空行也是程序代码的一部分。

三、变量

3.1变量的声明

python的变量定义和shell命名一样,都可以直接定义

3.1.1对单个变量赋值

variable_name = value

3.1.2对多个变量赋予同一个值

variable_name1=variable_name2=variable_name3……=value

3.1.2对多个变量赋予不一样的值

variable_name1,variable_name2,variable_name3……=value1,value2,value3……

3.2变量名的命名规则

1、字母,数字,下划线组成

2、数字不能开头

3、严格区分字母大小写

4、不能直接用保留字或者关键字(都是小写的)

3.3变量的作用域

3.3.1 变量作用域(scope)在Python中是一个容易掉坑的地方。
Python的作用域一共有4中,分别是:

L (Local) 局部作用域:定义在函数中的变量
E (Enclosing) 闭包函数外的函数中
G (Global) 全局作用域
B (Built-in) 内建作用域
以 L --> E --> G -->B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内建中找。

#全局变量
global_variable = 123
def function_name ():
    glc = 345 #局部变量
    print(‘函数中调用全局变量:‘,global_variable)
    return glc
print(‘全局变量:‘,global_variable)
# print(glc)局部变量不能在本函数外被调用
print(function_name())#局部变量只能在本函数中调用

结果如下:

全局变量: 123
函数中调用全局变量: 123
345

3.3.2 闭包Closure
闭包的定义:如果在一个内部函数里,对在外部函数内(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)。

这个概念在javascript里面具有很好的体现。

函数嵌套/闭包中的作用域:

def external():
    global a #声明一个全局变量
    a = 200
    print (‘本地函数调用:‘,a)

    b = 100#创建外部函数变量
    #定义内部函数
    def internal():
        # nonlocal b
        print (‘调用外部函数的变量:‘,b)
        b = 200#给外部函数的变量修改值
        return b

    internal()#执行内部函数
    print (‘输出外部函数变量的值:‘,b)

print (‘外部函数的结果:‘,external())

运行结果:

UnboundLocalError: local variable ‘b‘ referenced before assignment

会报错- 引用在赋值之前,Python3有个关键字nonlocal可以解决这个问题,但在Python2中还是不要尝试修改闭包中的变量。

关于闭包中还有一个坑:

from functools import wraps#导入模块(导包)

def wrapper(log):
    def external(F):
        @wraps(F)
        def internal(**kw):
            if False:
                log = ‘modified‘
            print( log)
        return internal
    return external

@wrapper(‘first‘)
def abc():
    pass

print (abc())

也会出现 引用在赋值之前 的错误,原因是解释器探测到了 if False 中的重新赋值,所以不会去闭包的外部函数(Enclosing)中找变量,但 if Flase 不成立没有执行,所以便会出现此错误。除非你还需要else: log=‘var‘ 或者 if True 但这样添加逻辑语句就没了意义,所以尽量不要修改闭包中的变量。

好像用常规的方法无法让闭包实现计数器的功能,因为在内部进行 count +=1 便会出现 引用在赋值之前 的错误,解决办法:(或Py3环境下的 nonlocal 关键字)

def counter(start):
    count =[start]
    def internal():
        count[0] += 1
        return count[0]
    return internal

count = counter(0)
for n in range(10):
    print (count())
# 1,2,3,4,5,6,7,8,9,10

count = counter(0)
print (count())

3.3.3

locals() 和 globals()
globals()
global 和 globals() 是不同的,global 是关键字用来声明一个局部变量为全局变量。globals() 和 locals() 提供了基于字典的访问全局和局部变量的方式

比如:如果函数1内需要定义一个局部变量,名字另一个函数2相同,但又要在函数1内引用这个函数2。

def var():
    pass

def f2():

    var = ‘Just a String‘

    f1 = globals()[‘var‘]

    print (var)

    return (type(f1))

print (f2())

# Just a String

# <type ‘function‘>

locals()
如果你使用过Python的Web框架,那么你一定经历过需要把一个视图函数内很多的局部变量传递给模板引擎,然后作用在HTML上。虽然你可以有一些更聪明的做法,还你是仍想一次传递很多变量。先不用了解这些语法是怎么来的,用做什么,只需要大致了解locals()是什么。
可以看到,locals()把局部变量都给打包一起扔去了。

@app.route(‘/‘)

def view():

    user = User.query.all()

    article = Article.query.all()

    ip = request.environ.get(‘HTTP_X_REAL_IP‘,request.remote_addr)

    s = ‘Just a String‘

    return render_template(‘index.html‘, user=user,article = article, ip=ip, s=s)

#或者 return render_template(‘index.html‘, **locals())
时间: 2024-10-03 03:16:18

一、 Python概述、变量的相关文章

Windows下python环境变量配置

开始学习python开发时,我们首先要了解python是什么,并且了解python开发的环境以及环境配置,其实很多朋友在对python环境配置(http://www.maiziedu.com/course/python/276-2605/)时会出现各种各样的细节错误,导致浪费很多时间,去解决各种问题.因此,小编在本文中给大家讲讲python环境变量设置的方法. 默认情况下,在windows下安装python之后,系统并不会自动添加相应的环境变量.此时不能在命令行直接使用python命令. 1. 

python的变量传递

python中变量都被视为对象的引用.python函数调用传递参数的时候,不允许程序员选择传值还是传引用,python参数传递采用的都是“传对象引用”的方式.     这种方式相当于传值和传引用的结合,如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值——相当于通过“传引用”来传递对象:如果函数收到的是一个不可变对象(比如数字.字符串或元组)的引用,就不能直接修改原始对象——相当于“传值”来传递对象. def Func(x): x = 20 a = 10 Func(a)

python基础(2):python的变量和常量

今天看看python的变量和常量:python3 C:\test.py 首先先说一下解释器执行Python的过程: 1. 启动python解释器(内存中) 2. 将C:\test.py内容从硬盘读入内存(这一步与文本编辑器是一样的) 3. 执行读入内存的代码 如果想要永久保存代码,就要用文件的方式如果想要调试代码,就要用交互式的方式 变量是什么? 变:变化,核心在与变化    量:衡量,计量,表达是一种状态 变量的定义 ps: level = 1 level:变量名  =:赋值运算符  1:值

python的变量,对象的内存地址以及参数传递过程

作为一个由c/c++转过来的菜鸟,刚接触Python的变量的时候很不适应,应为他的行为很像指针,void* ,不知道大家有没有这样的感觉.其实Python是以数据为本,变量可以理解为标签.作为c/c++的菜鸟,把跟踪变量地址的习惯带入Python,举个小例子说明Python的变量,对象,及参数传递. 1 '''例子1''' 2 x = 1 3 def fun(x): 4 x = 2 5 return None 6 7 fun(x) 8 print(x) 其实不打印也可以,我们用pycharm单步

python 的变量

一.什么是变量 1. 变量,顾名思义就是"可以改变的量"2. 变量是计算机内存中的一块区域,变量可以存储规定范围内的值,而且值可以改变3. Python下变量是对一个数据的引用,比如我想读内存当中的一块数据,那么我是通过变量名来引用的,而变量重新赋值可以理解成在变量名在内存中指向了另外一个区域 二.变量的命名规则 1. 变量名由字母.数字.下划线组成2. 变量名不能以数字开头3. 变量名不可以使用关键字 三.如何给变量赋值 在python中给变量赋值是这样写的:a = 123 (中间有

python入门基础教程01 Python概述

01 Python概述 Python是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定.Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用.1 这种语言具有非常简捷而清晰的语法特点,适合完成各种高层任务,几乎可以在所有的操作系统中运行. 目前,基于这种语言的相关技术正在飞速的发展,用户数量急剧扩大,相关的资源非常多. 现代计算机系统简介 这里我们首先简要了解一下现代计算机的体系结构.现代计算机通常是由计算机硬

Python中变量的作用域(variable scope)

http://www.crifan.com/summary_python_variable_effective_scope/ 解释python中变量的作用域 示例: 1.代码版 1 #!/usr/bin/python 2 # -*- coding: utf-8 -*- 3 """ 4 ------------------------------------------------------------------------------- 5 Function: 6 [整理

配置python环境变量(转)

默认情况下,在windows下安装python之后,系统并不会自动添加相应的环境变量.此时不能在命令行直接使用python命令. 1.首先需要在系统中注册python环境变量:假设python的安装路径为c:\python2.5,打开“我的电脑->属性->高级->环境变量->系统变量”在PATH的值后面追加:   " ;c:\python25" (记得加上“;”分号),与前面的值分隔开 上述环境变量设置成功之后,就可以在命令行直接使用python命令.或执行&q

Python - 关于Python的变量

Python的变量是动态的,不需要预先申明,当赋值时自动创建变量,并且Python变量存储的是对象的引用(非变量本身). Python变量的命名规则与C语言相似,并且在日常使用中一般会遵循以下一些规则: A. 一般不以单下划线"_"开头,因为以单下划线开头的变量不能被from module import *所导入: B. 前后有双下滑线是系统定义的变量名,对解释器有特殊的意义,所以一般不以双下划线开始和结束: C. 仅以双下划线开头的变量一般用作类的本地变量: D. self对类有特殊