Python:基础

语法规范

python的语法总结一下就两条:
1、一条代码作为一行。比如:一个赋值、一个运算、一个请求、一条打印等
2、对齐和缩进:同一级别的代码只需要保持对齐即可,对于不同级别的代码进行缩进。这样就可以区分开代码的执行逻辑例1:

num1 = 1,num2 = 2,num3 = 3
total = num1 + \
num2 + \
num3
print("total is : %d"%total)

"""

如果一行含有多个语句将会抛出异常 ,Python代码中一行只能有一个语句,以新行作为为语句的结束符。

例2:

if True:
    print("Hello girl!")
else:
    print("Hello boy!")
print("end")
print("=========华丽的分割线===========")
if True:
    print("Hello girl!")
else:
  print("Hello boy!")
  print("end")
  
"""
上面代码输出结果:
Hello girl!
end
=========华丽的分割线===========
Hello girl!
"""

备注:
1、缩进相同的一组语句构成一个代码块,我们称之代码组
2、像if、else、elif、for、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组
3、缩进统一:空格、tab等,尽量使用一种。(官方建议四个空格)流程控制语句体要缩进,不缩进则被解析为非流程控制的语句体。


Python多行语句 

Python语句中一般以新行作为为语句的结束符。但是我们可以使用斜杠( \ )将一行的语句分为多行显示。若语句中包含[], {} 或 () 括号就不需要使用多行连接符

例3:

num1 = 1
num2 = 2
num3 = 3
total = num1 + \
num2 + \
num3
print("total is : %d"%total)    

#上面代码的输出结果为:total is : 6

变量

变量标识符规范

标识符的第一个字符必须是字母表中的字母(大写或小写)或者一个下划线(" _ ")
标识符名称的其他部分可以由字母(大写或小写)、下划线(" _ ")或数字(0-9)组成。
标识符名称是对大小写敏感的。例如,myname和myName不是一个标识符。注意前者中的小写n和后者中的大写N。
标识符名称不能是关键字,如import、class、break、if、while等等,用了不报错,但当使用关键字的时候就报错了,被你的变量冲掉了原来的关键字
 

备注:
1、变量的赋值是存放在内存空间中,再从内存空间获取
2、变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符串等

例3_1:

>>> name = "Zha"
>>> name
'Zha'
>>>

3、变量赋值的时候,若变量名在内存中没有的话就等于赋一个新的变量,若变量名已在内存中,则是重新改写这个变量(变量不仅可以赋值各种类型,还可以随意改变类型)

扫描二维码关注公众号,回复: 5400633 查看本文章

例4:

>>> name = "Zha"
>>> name
'Zha'
>>> name = 1
>>> name
1
>>> 

4、变量的赋值是指向内存地址,变量1赋值变量2,变量1重新赋值后不改变变量2的值,因为变量1重新赋值后内存地址改变,而没有重新赋值的变量2内存地址不变。

例5:

>>> name = "Zhong Yi"
>>> name
'Zhong Yi'
>>> name2 = name
>>> name2
'Zhong Yi'
>>> name = "Jigongtou"
>>> name
'Jigongtou'
>>> name2
'Zhong Yi'

 5、查看变量的内存地址,id()
例子6:

>>> id(name)
140514571357472
>>> id(name2)
140514571357520
>>> id(name),id(name2)
(140514571357472, 140514571357520)
>>> 

6、多个变量赋值:Python允许你同时为多个变量赋值
例7:

#a = b = c = 1
#以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。
>>> a=b=c=1
>>> a,b,c
(1, 1, 1)
>>> 

7、您也可以为多个对象指定多个变量(序列解包)
例8:

#a, b, c = 1, 2, "john"
#以上实例,两个整型对象1和2的分配给变量a和b,字符串对象"john"分配给变量c。
>>> a,b,c=1,2,"john"
>>> a,b,c
(1, 2, 'john')
>>> 

8、变量分为全局变量和局部变量。全局变量就是对于整个文件产生作用,在程序任意位置都可以调用,也就是说该变量程序结束时才会被回收,而局部变量只能对某一部分代码产生作用,一旦这部分代码结束,这个变量就会被回收
例9:

a = 1
def num():
    print(a)
#变量a为全局变量,在函数内、函数外都可以调用
if __name__ =="__main__":
    num()
    print(a)
    
#上面代码的数据结果:1、1

例9_1:

def num():
    a = 1
    print(a)

if __name__ =="__main__":
    num()
    print(a)
    
"""
1、上面代码输出结果:NameError: name 'a' is not defined
2、只能在函数体内访问局部变量,不能函数体外访问局部变量
3、即a在调用函数num()后,就被回收了,所以后面在打印时就不存在a变量了
"""

9、函数体外访问局部变量:global关键字
例10:

def num():
    global a  
#使用global关键字使局部变量变为全局变量,可以在任意位置(函数体外)访问该变量
    a = 1
    print(a)

if __name__ =="__main__":
    num()
    print(a) 

#上面代码的数据结果:1、1

10、重新定义全局变量:在函数体内重新定义全局变量例11:

a = 1
def num():
    a = 2

    print(a)

if __name__ =="__main__":
    num()
    print(a)

#上面代码的数据结果:2、1

注:有上面例子可以看出:在函数体内重新定义全局变量后,不会改变原变量的值例11_1:

a = 1
def num():
    global a  
#变量a本来就是全局变量,在局部定义域内重新后且用了关键字global后,就会改变全部变量中的值
    a = 2

    print(a)

if __name__ =="__main__":
    num()
    print(a)

#上面代码的数据结果为:2、2

 

运算

算术运算

1、常见的算术运算就是加减乘除
2、当有复杂运算时需遵守两个原则:
            ①括号内的运算优先运算
            ②先乘除后加减,从左到右依次运算

例12:

a,b,c = 1,2,3
print((a+b)/c)

#上面代码的数据结果为:1.0


关系运算

==  如果两个操作数的值相等,则条件为真
!=   如果两个操作数的值不相等,则条件为真。                    
如果左操作数的值大于右操作数的值,则条件成为真。        
如果左操作数的值小于右操作数的值,则条件成为真。     
>=   如果左操作数的值大于或等于右操作数的值,则条件成为真。    
<=   如果左操作数的值小于或等于右操作数的值,则条件成为真。 

  注:
1、上面6种比较的结果只有2种,True或False,比较的结果与事实一致就是True,反之就为False
2、关系运算的优先级低于算术运算,当两者同时存在时优先进行算术运算,在进行关系运算

例13:

a,b,c = 1,2,3
print((a+b)/c == 1)
print(a+b<c)

#上面代码的数据结果为:True、False


赋值运算

= 将右侧操作数的值分配给左侧操作数 c = a + b表示将a + b的值分配给c
+=  将右操作数相加到左操作数,并将结果分配给左操作数  c + = a等价于c = c + a
-=  从左操作数中减去右操作数,并将结果分配给左操作数  c -= a 等价于 c = c - a
*=  将右操作数与左操作数相乘,并将结果分配给左操作数  c *= a 等价于 c = c * a
/=  将左操作数除以右操作数,并将结果分配给左操作数  c /= a 等价于 c = c / a

例14:

a,b,c = 1,2,3
a *=2
b +=2
c -=2

print(a,b,c)

#上面代码的数据结果为:2 4 1


逻辑运算符

and  如果两个操作数都为真,则条件成立。                  
or 如果两个操作数中的任何一个非零,则条件成为真
not    用于反转操作数的逻辑状态。 

例15:

a = True
b = False
x = 3
y = 4
z = 0
print ('(a and b) = ', (a and b))
print ('(a or b) = ', (a or b))
print ('not(a and b) = ', not(a and b))
print(x and y)#两边同为true时,才返回true
print(x or y)#任意一边为true时,才返回true,同为false时返回false
print(not x) #a=3是true,所以返回False
print(x and z)#z=0是False
print(x or z)
print(not z)
print(a > b and a == b)

"""
(a and b) =  False
(a or b) =  True
not(a and b) =  True
4
3
False
0
3
True
False
"""

注:
1、值不为0或不为空时,程序均判断为True
2、在python中 None,  False, 空字符串" ", 0, 空列表[], 空字典{}, 空元组()都相当于False例15_1:

#if与not连用时,只有当条件为真时参才会执行冒号后面的语句
a = True
b = False
if not a:   #这里因为a是True,所以not a就是False,不会执行冒号下面的语句
    print("a = hello")

if not b:   #这里因为b是False,所以not b就是True,不会执行冒号下面的语句
    print("b = hello")

#上面代码的数据结果为:b = hello

函数

语法如下:

def 函数名():
    ...
    ...

注:
函数名可以由数字、字母或者下划线组合而成,但不能以数字开头,冒号以下的代码是函数的主体,换行的缩进表示代码属于该函数


函数的参数

自定义函数的时候还可以加上参数,参数可以是一个,也可以是多个,参数放在()里面。此时加上的参数只是一个形式参数,而非真的实际参数(形参和实参的变量名可以是一样的,但是代表的意义不一样)。简单的来讲可以将形参理解成通过一本书占座,实际人过来的时候对应这本书的名字来坐上这个座位例16:

def num(a,b):   #定义一个函数,并创建形参a,b
    c = a + b    
    print(c)    

num(1,2)    #调用函数,并给形参a,b分别赋值1,2
num(3,4)    

#上面代码的数据结果为:3、7

注:
1、对于函数num()来说,函数内的a,b只是一个空壳,a,b可以代表任意数据
2、在加形参的时候也可以给形参赋值,产生一个默认值,当调用函数不加实参时,就以定义函数时参数的值作为实际值;当调用函数加上实参时,则用新的实参代替原来的参数值


函数的返回值

在上面的例子中定义函数只是用来执行某些操作,并没有将最后执行的结果保存。上面例子中只是将c的值打印出来,并未将c的值保存和返回,导致c的值只能在函数内使用因此需要使用return返回c的值,将函数的返回值赋值给一个变量,由此可以在其他函数中调用(还可以将c定义成全局变量,则在函数外也可以使用,不过这样写不美观)

例17:

def num(a,b):
    global c
    c = a + b
    return c

def num_1(b =1):
    d = c +1
    print(d)

num_1(num(1,2))

例17_1:

def num(a,b):
    c = a + b
    return c

def num_1(c,b =1):
    d = c +1
    print(d)

c = num(1,3)
num_1(c)

#上面代码的输出结果为:4

注:
有时候需要的返回值不止一个,同样可以使用return来返回,区别于单个返回值,多个返回值时需要使用逗号分隔开数据以元组形式返回,同样也可以把返回值按照顺序赋值给多个变量

例18:

import pymysql

def ConnectMysql():
    charset_ = 'utf8'
    conn = pymysql.connect(host="localhost",port=3306,user="root",password='123456',charset=charset_)
    cursor = conn.cursor()
    return conn,cursor   #返回所需要的值

def GetDatabases(cursor):
    show_databases_sql = "SHOW DATABASES"
    cursor.execute(show_databases_sql)
    show_databases_sql_result = cursor.fetchall()
    print("一共存在以下%s个数据库:"%len(show_databases_sql_result))
    for databases in show_databases_sql_result:
        print(databases)

if __name__ == "__main__":
    conn,cursor = ConnectMysql()  #将返回的值赋值给其他变量,函数体外也可以使用该变量
    GetDatabases(cursor)

猜你喜欢

转载自blog.csdn.net/qq_39314932/article/details/87924912