目录

  • 基础
    • 集合区分
    • 解释和编码的申明
    • 模糊化变量类型
    • tab 区分层级
    • 多返回值
    • 函数关键字
    • 匿名函数
    • 生成器
    • 特殊关键字pass
    • 特殊符号
  • 面向对象
    • 生命周期
    • 类也是对象

python是一种解释类型语言,类似于javascript。因此这也是导致其有缺点的因素运行效率不高因为需要解释成机器语言,并且代码安全性不高需要传输完整代码到运行的机器上。但是这些都不能影响其主流语言的地位,业界一句知名的话 “生命苦短,及时python” 人家使用方便啊,写更少的代码做更多的事

为了更快更好的掌握,我们根据和java对比来学习

基础入门参考github python系统学习入门

本文代码示例 https://github/MobiDevOS/PythonBasic.git

基础

集合区分

#字典 类似java的map
dict1 = {key1 : value1, key2 : value2 }
#List类似于java的数组
list1 = ['key1','key2','key3']
#元组类似于java的List
tuple1 = ('key1','key2','key3',key4)
#set集合类同于java的Set
set1 = set([123,456,789])

解释和编码的申明

#!/usr/bin/env python3 用作linux和UnixOs 指明py文件需要使用python来解析
# -*- coding: utf-8 -*- 指定编码格式为utf-8防止输出中文乱码

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

模糊化变量类型

a = 8 #表示a为8的整形变量 
  • 不需要用分号(;)结束
a = 8
b = 9 

tab 区分层级

区别于java没有{}来划分区域是根据tab 四个空格是一个层级如下

   a = 8
   b = 9
    if a>10:
        if b>10:
            print(b)
    print(a)

相当于java表达式

int a = 8
int b = 9
if (a>10){
	if b>10{
		System.out.println(b)
	}
	System.out.println(a)
}

多返回值

函数可以返回多个值,并且接收方式可以不同
输出结果 :2.0 1 和 (2.0, 1)

 def  division ( num1, num2 ):
        # 求商与余数
        a = num1 % num2
        b = (num1-a) / num2
        return b , a

    num1 , num2 = division(9,4)
    tuple1 = division(9,4)

    print (num1,num2)
    print (tuple1)

函数关键字

函数指定只接受关键字传值

注意在函数参数中定义*, 这样的结构的时候 * 后面所有的参数都只能按照入参指定的关键之来调用如下。如果使用 print_user_info( ‘张三’,‘12’,‘女’) 则会编译不过

   def print_user_info( name , *,age  , sex = '男' ):
        #打印用户信息
        print('昵称:{}'.format(name) , end = ' ')
        print('年龄:{}'.format(age) , end = ' ')
        print('性别:{}'.format(sex))
        return;

    print_user_info( '张三',age='12',sex='女')

匿名函数

指定匿名函数,在使用的时候确定局部变量的值下面这两个输出结果都为
100001

 	num2 = 100
    sum1 = lambda num1 : num1 + num2 ;

    num2 = 10000
    sum2 = lambda num1 : num1 + num2 ;
    print( sum1( 1 ) )
    print( sum2( 1 ) )

生成器

特别注意生成器的使用

参考这里

特殊关键字pass

  • 暂时不处理关键字
    pass 处理暂时不处理的任务
def testPass():
    a = 100
    if a > 100:
        pass
    else:
        print('pass')

特殊符号

  • 单个下划线表示私有变量,双下划线来表示类变量,两边下划线修饰的方法来表示魔术方法(一些特殊的方法做了特别的封装),如下_age是私有变量,类似于java的private修饰符
  • 对于类变量的解释如下可以通过对象._类名__参数名如下面示例的userInfo._UserInfo__account
  • __init__魔术方法如下使用dir(userInfo)列出类种所有的魔术方法

class UserInfo(object):
    def __init__(self, name, age, account):
        self.name = name
        self._age = age
        self.__account = account

    def get_account(self):
        return self.__account


if __name__ == '__main__':
    userInfo = UserInfo('两点水', 23, 347073565);
    # 打印所有属性
    print(dir(userInfo))
    # 打印构造函数中的属性
    print(userInfo.__dict__)
    print(userInfo.get_account())
    # 用于验证双下划线是否是真正的私有属性
    print(userInfo._UserInfo__account)

面向对象

生命周期

new,init,del 这三个魔术方法分别在类的创建初始化和被销毁的时候调用

	def __new__(self,[...):
	def __init__(self,[...):
	def __del__(self,[...):

类也是对象

  • 类就是一组用来描述如何生成一个对象的代码段,那
    如何理解python类也是对象这个问题呢在python里,当解析到class 关键字的时候就已经开始分配内存了,如下打印结果
    <main.ObjectCreator object at 0x000000000240E358>
    <class ‘main.ObjectCreator’>
class ObjectCreator(object):
    pass


def echo(ob):
    print(ob)


mObject = ObjectCreator()
print(mObject)

# 可以直接打印一个类,因为它其实也是一个对象
print(ObjectCreator)

  • 在类中可以直接创建对象 使用type定义
    type(类名, 父类的元组(针对继承的情况,可以为空),包含属性的字典(名称和值))
```python
class ObjectCreator(object):
    pass


def echo(ob):
    print(ob)


mObject = ObjectCreator()
print(mObject)

# 可以直接打印一个类,因为它其实也是一个对象
print(ObjectCreator)


持续更新----

更多推荐

Python基础笔记