Python基础知识

一:基础知识

   变量:Python与大多数其他计算机语言的做法稍有不同,它并不是把值存储在变量中,而更像是把名字贴在值上边,所以大多数python程序员会说“Python没有变量,只有名字”

   字符串: 保持原始字符串  方案一:加r  :string= r ‘C:\now’  方案二:三重引号  

   操作符优先级:**(幂)//(语言除法)*(乘) /(数学真实除法) %(取余) +(加) - (减) <(小于) >()大于  and(与) not(非) or(或)    例: 3<4<5与3<4 and 4<5 

   输出:print   输入:input ("请输入合法字符:"); raw_input("什么东西都能接受");

   分支与循环:(插代码)

   

   列表:鱼C论坛说“列表:一个“打了激素”的数组”形容十分贴切    以中括号[1,2,'大王',1.2]表示

           方法:添加一个 list.append(‘内容’)    扩展列表   list.extend(['内容1','内容2']) (也可以+但不建议使用)    插入   list.insert(1,'内容')   获取元素   与数组一样 list[2]

                    删除  list.remove('内容')  del list[位置]     弹出:list.pop(索引)   列表分片:list[1:9:2]获得一个新的列表,为原列表重第一个到第九个每2个取一个值   反转 list.reverse()

                     排序:sort()从小到大 默认归并排序

    元组:以小括号表示() 无法修改内容的列表  其他操作与列表一致     更新元组(在原元组的基础上新建一个元组,原元组被回收)tuple[:2]+('内容1',)+tuple[2:]

    函数:

 1 #定义一个函数
 2 def add(num1,num2):
 3      """这里可以写函数的说明文档"""
 4      return num1+num2
 5 #Python支持默认参数值
 6 def add1(num1 = 2 ,num2 = 5):
 7      """这里可以写函数的说明文档"""
 8      return num1+num2
 9 #Python 同样支持可变参数
10 def  countnum(*num):
11      print("有%d个参数" % len(num))
12      print(“第二个参数是:”,num[1])

     字典:映射类型,以大括号{'语文':'A','数学':'A','英语':'B'} 项(item()),键(key()),值(valune())

               创建字典:x=dict(语文='A',数学='A',英语='B')(dict为关键字)

                方法:x.clean();          x.copy();返回字典      x.get("语文");返回value      x.pop();  x.keys();返回含所有key的列表   x.values();返回含所有value的列表     

     集合: 以大括号set1={"1号","2号","3号","4号"},集合中每一个元素不重复,

                  set2=set(["1号","2号","3号","4号"])

                  set1==set2

                 输出:true

                 方法:add();remove();

     文件:打开文件:open(file,mode='r',buffering=-1;encoding=Node;errors=None,newline=None,closefd=True,opener=None)  返回一个文件对象

                                'a'写入模式打开文件,文件存在·,则在末尾追加写入

                方法:read();       readline();           write(str);          writelines(seq);         seek(offset ,from);          tell();返回当前在文件中的位置

               关闭文件:close();

      文件系统:os模块

      pickle模块:

 1 import pickle
 2 
 3 my_list = [123,3.14,'2号',['another list']]
 4 #文件后缀为.pkl或者.pickle
 5 pickle_file = open('E:\\my_list.pkl','wb')
 6 #使用dump保存列表,
 7 pickle.dump(my_list,pickle_file)
 8 pickle_file.close()
 9 
10 
11 pickle_filetwo = open(“E:\\my_list.pkl”,"rb")
12 #用load方法进行加载
13 my_listtwo = pickle.load(pickle_filetwo)
14 print(mylisttwo)

二:面向对象

       类与对象:对象=属性+方法,类是对象的抽象,例如:“人”是一个类,“阿苍老师”就是一个对象,“拍电影”是他的一个方法,“大长腿”是他的一个属性

       

      

 

    

    

   

 

 

Java中的向上转型与向下转型

1 : 向上转型:大体可以理解为子类转换成父类,例子优先还是:

 1 public class Animal {
 2     public void eat(){
 3         System.out.println("animal eatting...");
 4     }
 5 }
 7 public class Cat extends Animal{
 9     public void eat(){
11         System.out.println("我吃鱼");
12     }
13 }
15 public class Dog extends Animal{
17     public void eat(){
19         System.out.println("我吃骨头");
20     }
22     public void run(){
23         System.out.println("我会跑");
24     }
25 }
27 public class Main {
29     public static void main(String[] args) {
31         Animal animal = new Cat(); //向上转型
32         animal.eat();
34         animal = new Dog();
35         animal.eat();
36     }
38 }
39 
40 //结果:
41 //我吃鱼
42 //我吃骨头

(1):虽然将子类转换成父类,但调用方法是调用的是子类的方法,这里的转型只是父类的引用指向了子类的实例。

(2):如果子类还有父类中没有的方法 w 可以调用吗 ?答案当然是不能,子类转换成父类,子类多余的方法会丢失,就像例子中dog的run()方法会丢失

(3)为什么要用向上转型:父类是接口啊!接口的好处就不用说了,比如当你对所有动物全部放生,就不用一个个放生,可以 Save(Animal);就OK

2:向下转型:简单来说就是将父类转换为子类,但是转换可就不像向上转那末好转了!理解起来也比向上转型不好理解

(1):首先注意:向下转型的前提是父类对象指向的是子类对象,就是你必须先向上转然后才能向下转,可能会有人说转上去再转下来,没有意义啊!作用就是当再次转下来的时候,就可以调用向上转丢失的方法,而且编程以后接口一多会有很多泛型编程,这样就可以针对父类进行编程,如果需要再取用子类的方法。

(2):强制类型转换:将一个子类的引用赋值给超类,编译器是允许的,但将一个超类引用赋给一个子类变量必须进行强制类型转换,

public class Sys{   
    public static void main(String[] args) {   
        Animal a=new Dog(); //向上转型  
        a.eat();  
          
        Dog aa=(Dog)a; //向下转型,编译和运行皆不会出错(正确的)  
        aa.eat();//向下转型时调用的是子类的  
        aa.run(); 
            
        Animal a2=new Animal();  
        Dog aa2=(Dog) a2; //-不安全的---向下转型,编译无错但会运行会出错  
        aa2.eat();  
        aa2.run();   
    }  
} 
//结果为:
//我吃骨头
//我吃骨头
//我会跑
//报错······

         结果表明:只有先经过向上转型的才能进行向下转型,向下转型必须要进行强制类型转换,

(3):另外要注意两点,

第一:如果Cat向上转成Animal,那末向下转Animal只能转成Cat,不能转成Dog,因为Cat怎么也不会变成Dog

第二:为了安全的类型转换,向下转型时最好先   if ( Dog instanceof Animal) 判断一下,否则一旦无法转换,程序就会直接终止 

转载于:https://www.cnblogs.com/nullering/p/9102578.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值